cisst-saw
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Classes | Functions
mtsManagerComponentBase.h File Reference

Declaration of Base Class for Manager ComponentsIn the networked configuration, the communication between the global component manager (GCM) and local component managers (LCMs) is currently done by SLICE. If the cisstMultiTask's command pattern is used instead, users can have more flexible way to interact with the system, such as creating and starting components dynamically. To replace SLICE with the cisstMultiTask's command pattern, we introduce a special type of component, manager component. More...

#include <cisstMultiTask/mtsTaskFromSignal.h>
#include <cisstMultiTask/mtsInterfaceProvided.h>
#include <cisstMultiTask/mtsInterfaceRequired.h>
#include <cisstMultiTask/mtsParameterTypes.h>
#include <cisstMultiTask/mtsExport.h>

Go to the source code of this file.

Classes

class  mtsManagerComponentBase
 
class  mtsManagerComponentBase::ComponentNames
 
class  mtsManagerComponentBase::InterfaceNames
 
class  mtsManagerComponentBase::CommandNames
 
class  mtsManagerComponentBase::EventNames
 

Functions

 CMN_DECLARE_SERVICES_INSTANTIATION (mtsManagerComponentBase)
 

Detailed Description

Declaration of Base Class for Manager Components

In the networked configuration, the communication between the global component manager (GCM) and local component managers (LCMs) is currently done by SLICE. If the cisstMultiTask's command pattern is used instead, users can have more flexible way to interact with the system, such as creating and starting components dynamically. To replace SLICE with the cisstMultiTask's command pattern, we introduce a special type of component, manager component.

There are two different typs of it, manager component server and client. The manager component server (MCS) runs in LCM that runs with GCM in the same process and only one instance of MCS exists in the whole system. On the contrary, each LCM has manager component client (MCC) that connects to MCS and thus more than one MCC can exist in a system. However, LCM can have only one MCC, i.e., one MCC per LCM.

The cisstMultiTask's command pattern is based on a pair of interfaces that are connected to each other. The following diagram shows how user and internal interfaces are defined and how such interfaces are connected to each other.

(INTFC = one provided interface + one required interface)

        GCM - LCM - MCS (of type mtsManagerComponentServer)
                     |
                   INTFC ("InterfaceGCM")

                     :
                     :

                   INTFC ("InterfaceLCM")
                     |
              LCM - MCC (of type mtsManagerComponentClient)
                     |
                   INTFC ("InterfaceComponent")

                     :
                     :

                   INTFC ("InterfaceInternal")
                     |
               User Component
          with internal interfaces

The cisstMultiTask has four different set of internal connections between components.

1) InterfaceInternal.Required - InterfaceComponent.Provided : Established whenever mtsManagerLocal::AddComponent() gets called

2) InterfaceLCM.Required - InterfaceGCM.Provided : Established when a singleton of mtsManagerLocal gets instantiated (See mtsManagerLocal's constructor)

3) InterfaceGCM.Required - InterfaceLCM.Provided : When MCC connects to MCS (See mtsManagerComponentServer::AddNewClientProcess())

4) InterfaceComponent.Required - InterfaceInternal.Provided : When user component with internal interfaces connects to MCC (See mtsManagerComponentClient::AddNewClientComponent())

Note
Related classes: mtsManagerLocalInterface, mtsManagerGlobalInterface, mtsManagerGlobal, mtsManagerProxyServer

Function Documentation

CMN_DECLARE_SERVICES_INSTANTIATION ( mtsManagerComponentBase  )