OpenTop Features: Core Services
Core services are provided by the OpenTop ot namespace,
which contains C++ framework classes that provide a stable and predictable runtime
environment upon which all other OpenTop functions are built.
OpenTop is an extensive object-oriented library.
Object-oriented designs are generally more effective when objects can be shared
and manipulated freely, without the programmer having to continually worry about
object ownership, lifetime or resource management issues.
OpenTop shares and manages objects using reference-counting, which
is a simple yet effective technique for sharing the ownership (and responsibility)
for an object between multiple clients. When the last client
releases its reference, the object is automatically destroyed.
OpenTop also manages the lifetime of long-lived objects such
as class factories and other singletons, ensuring they are correctly
deleted during program termination.
Threads and Synchronization
The OpenTop Thread
implementation uses the native facilities of the underlying
operating system, but exposes a simple interface which is common to all
platforms. By creating a common wrapper around both
WIN32 and POSIX threads, and exposing an interface modelled on the
popular Java abstractions, OpenTop greatly simplifies the task of
writing high-performance, multi-threaded programs in C++.
Threads which share data, state or some other common resource
with other concurrent threads must be synchronized. OpenTop
provides mutexes, condition variables and
a Java-style synchronization technique where classes may derive from either
or Monitor base classes.
OpenTop is available on a wide variety of platforms,
with each operating system providing differing levels of support
for threads, file systems and other core features.
To simplify cross-platform development, OpenTop abstracts away differences
in the underlying operating system by exposing a uniform interface (API)
and common behaviour on all platforms.
OpenTop contains support for multilingual messages. Error
messages produced by the library, in addition to those produced
by application code, can be routed
through a messaging framework which may be configured at runtime
to produce messages in the language of your choice.
Tracing and Instrumentation
OpenTop contains an efficient tracing mechanism which is used to
record significant events. Tracing, which is controlled by the
Tracer class, is disabled by default, but it can be dynamically
enabled and finely controlled at runtime to produce exactly the level of
diagnostic output desired.
The Tracer uses virtually no overhead when disabled, so we have incorporated
it in both debug and release builds of the library. Furthermore, tracing
is not restricted to reporting OpenTop events; applications are
encouraged to use it also, thereby producing a detailed
log of all application activity.