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).


Threading issues

Maestro starts Ensemble in a separate thread. The application can create as many additional threads as necessary. Methods of group-member objects can be invoked (asynchronously) from user threads. All Maestro callback methods are invoked from the Ensemble thread and therefore their implementation (as overloaded by the application) should not block.

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