 |
Maestro Overview
|
This document is a part of online
Ensemble documentation, under
Maestro Open Toolkit.
Maestro is a collection of C++ classes that implement ADT's for
essential types
(endpoint ID's, messages, threads, etc.) and
group-member /
client-server abstractions.
The implementation of
clients/servers is
currently a prototype: All clients and servers join the same Ensemble group,
and distinction between them is maintained at the Maestro level. We are
planning to provide support for "real" clients (through the same or alsmost
the same interface), which will allow for better scalability/performance.
The state-transfer protocol for servers is
currently implemented within Maestro. However, we are planning to eventually
intergate it with the native state-transfer protocol of Ensemble,
and provide support for state transfer with primary views (as in Horus).
Maestro can be run in either multi-threaded or single-threaded mode.
In the
multi-threaded mode,
Ensemble
is started in a separate thread, and application can create as many
threads as necessary. Methods of group-member objects can be invoked
(asynchronously) from user threads.
In the
single-threaded mode,
the application
first creates/initializes group-member objects and then makes a
(non-returning) call to start Ensemble in the same thread. After
initialization of Ensemble, methods of group-member objects can only be
invoked from within group callbacks. Therefore, when overloading
callbacks/downcalls of group-member classes running in single-threaded mode,
special care needs to be taken to prevent deadlocks.
In both single-threaded and multi-threaded modes, all callback methods are
invoked from the Ensemble thread.
Ensemble/Maestro do not provide a threads package. However, Ensemble
defines a
System-Independent Threads Interface which can be implemented
either directly or by providing a stab to an existing threads package.
Ensemble currently supports native threads on NT and Solaris and provides
a stub to POSIX pthreads on other systems.
Index of Maestro Classes
Messages
Maestro_Message
Endpoints
Maestro_EndpID
Threads
Maestro_Thread
Maestro_Semaphore
Maestro_Lock
Maestro_Barrier
Group Members
Maestro_GroupMember
Maestro_GrpMemb_Options
Maestro_GrpMemb_ViewData
Clients/Servers
Maestro_ClSv
Maestro_ClSv_Options
Maestro_ClSv_MsgOptions
Maestro_ClSv_ViewData
State Transfer
Maestro_CSX
Miscellaneous Types
Maestro_ErrorHandler
Maestro_Base
Maestro_String
Maestro_OrderedSet
send mail to
alexey@cs.cornell.edu