55 #ifndef _mtsManagerLocal_h
56 #define _mtsManagerLocal_h
73 #define CONNECT_LOCAL(_clientComp, _reqInt, _serverComp, _prvInt)\
74 if (!mtsManagerLocal::GetInstance()->Connect(_clientComp, _reqInt, _serverComp, _prvInt)) {\
75 CMN_LOG_INIT_ERROR << "Failed to connect: "\
76 << _clientComp << ":" << _reqInt << " - "\
77 << _serverComp << ":" << _prvInt << std::endl;\
81 #define CONNECT_REMOTE(_clientProc, _clientComp, _reqInt, _serverProc, _serverComp, _prvInt)\
82 if (!mtsManagerLocal::GetInstance()->Connect(_clientProc, _clientComp, _reqInt, _serverProc, _serverComp, _prvInt)) {\
83 CMN_LOG_INIT_ERROR << "Failed to connect: "\
84 << _clientProc << ":" << _clientComp << ":" << _reqInt << " - "\
85 << _serverProc << ":" << _serverComp << ":" << _prvInt << std::endl;\
92 friend class mtsManagerLocalTest;
93 friend class mtsManagerGlobalTest;
96 friend class mtsManagerProxyClient;
100 friend class mtsComponentProxy;
114 LCM_CONFIG_NETWORKED_WITH_GCM
126 std::stack<std::string> MainTaskNames;
132 static bool UnitTestEnabled;
136 static bool UnitTestNetworkProxyEnabled;
138 ConfigurationType Configuration;
148 ComponentMapType ComponentMap;
156 std::string ProcessName;
159 const std::string GlobalComponentManagerIP;
162 std::string ProcessIP;
165 std::vector<std::string> ProcessIPList;
172 static osaMutex ConfigurationChange;
195 bool LogThreadFinishWaiting;
196 void* LogDispatchThread(
void * arg);
199 void SetupSystemLogger(
void);
203 bool MCCReadyForLogForwarding(
void)
const;
207 static void LogDispatcher(
const char * str,
int len);
210 static void SetLogForwarding(
bool activate);
213 static void GetLogForwardingState(
bool & state);
214 static bool GetLogForwardingState(
void);
217 static bool IsLogForwardingEnabled(
void);
220 static bool IsLogAllowed(
void);
227 const std::string & thisProcessName,
228 const std::string & thisProcessIP);
235 void Initialize(
void);
236 void InitializeLocal(
void);
240 bool CreateManagerComponents(
void);
247 bool AddManagerComponent(
const std::string & processName,
const bool isServer =
false);
254 bool ConnectManagerComponentClientToServer(
void);
259 bool ConnectToManagerComponentClient(
const std::string & componentName);
262 void SetIPAddress(
void);
266 bool ConnectToGlobalComponentManager(
void);
274 bool RegisterInterfaces(
const std::string & componentName);
277 ConnectionIDType ConnectSetup(
const std::string & clientComponentName,
const std::string & clientInterfaceRequiredName,
278 const std::string & serverComponentName,
const std::string & serverInterfaceProvidedName);
281 const std::string & clientComponentName,
const std::string & clientInterfaceRequiredName,
282 const std::string & serverComponentName,
const std::string & serverInterfaceProvidedName);
285 bool RemoveComponent(
mtsComponent * component,
const bool notifyGCM);
286 bool RemoveComponent(
const std::string & componentName,
const bool notifyGCM);
290 bool RemoveInterfaceProvided(
const std::string & componentName,
const std::string & interfaceProvidedName);
294 bool RemoveInterfaceRequired(
const std::string & componentName,
const std::string & interfaceRequiredName);
305 bool CreateComponentProxy(
const std::string & componentProxyName,
const std::string & listenerID =
"");
312 bool RemoveComponentProxy(
const std::string & componentProxyName,
const std::string & listenerID =
"");
318 const std::string & serverComponentProxyName,
324 const std::string & clientComponentProxyName,
329 const std::string & componentProxyName,
const std::string & providedInterfaceProxyName,
const std::string & listenerID =
"");
333 const std::string & componentProxyName,
const std::string & requiredInterfaceProxyName,
const std::string & listenerID =
"");
343 const std::string & serverComponentName,
344 const std::string & providedInterfaceName,
350 const std::string & componentName,
351 const std::string & requiredInterfaceName,
356 GCMConnected = connected;
364 mtsComponent * CreateComponentDynamically(
const std::string & className,
const std::string & componentName,
365 const std::string & constructorArgSerialized);
375 bool RemoveComponent(
const std::string & componentName);
378 mtsComponent * GetComponent(
const std::string & componentName)
const;
379 mtsTask * GetComponentAsTask(
const std::string & componentName)
const;
385 bool FindComponent(
const std::string & componentName)
const;
394 void CreateAll(
void);
397 bool CreateAllAndWait(
double timeoutInSeconds);
404 bool StartAllAndWait(
double timeoutInSeconds);
411 bool KillAllAndWait(
double timeoutInSeconds);
432 bool Connect(
const std::string & clientComponentName,
const std::string & clientInterfaceRequiredName,
433 const std::string & serverComponentName,
const std::string & serverInterfaceProvidedName);
458 bool Connect(
const std::string & clientProcessName,
const std::string & clientComponentName,
459 const std::string & clientInterfaceRequiredName,
460 const std::string & serverProcessName,
const std::string & serverComponentName,
461 const std::string & serverInterfaceProvidedName,
462 const unsigned int retryCount = 10);
467 bool Disconnect(
const std::string & clientComponentName,
const std::string & clientInterfaceRequiredName,
468 const std::string & serverComponentName,
const std::string & serverInterfaceProvidedName);
470 bool Disconnect(
const std::string & clientProcessName,
const std::string & clientComponentName,
471 const std::string & clientInterfaceRequiredName,
472 const std::string & serverProcessName,
const std::string & serverComponentName,
473 const std::string & serverInterfaceProvidedName);
504 static mtsManagerLocal * GetInstance(
const std::string & globalComponentManagerIP,
505 const std::string & thisProcessName =
"",
506 const std::string & thisProcessIP =
"");
514 std::vector<std::string> GetNamesOfComponents(
void)
const;
515 void GetNamesOfComponents(std::vector<std::string>& namesOfComponents)
const;
532 return Configuration;
564 const std::string & componentName,
565 const std::string & providedInterfaceName,
566 const std::string &
CMN_UNUSED(listenerID) =
"");
570 const std::string & componentName,
571 const std::string & providedInterfaceName,
572 const std::string &
CMN_UNUSED(listenerID) =
"");
576 const std::string & componentName,
577 const std::string & requiredInterfaceName,
578 const std::string &
CMN_UNUSED(listenerID) =
"");
582 const std::string & componentName,
583 const std::string & requiredInterfaceName,
584 const std::string &
CMN_UNUSED(listenerID) =
"");
588 const std::string & componentName,
589 const std::string & providedInterfaceName,
590 const std::string & commandName,
591 const std::string &
CMN_UNUSED(listenerID) =
"");
595 const std::string & componentName,
596 const std::string & providedInterfaceName,
597 const std::string & eventGeneratorName,
598 const std::string &
CMN_UNUSED(listenerID) =
"");
602 const std::string & componentName,
603 const std::string & requiredInterfaceName,
604 const std::string & functionName,
605 const std::string &
CMN_UNUSED(listenerID) =
"");
609 const std::string & componentName,
610 const std::string & requiredInterfaceName,
611 const std::string & eventHandlerName,
612 const std::string &
CMN_UNUSED(listenerID) =
"");
615 inline const std::string &
GetIPAddress(
void)
const {
return ProcessIP; }
618 static std::vector<std::string> GetIPAddressList(
void);
619 static void GetIPAddressList(std::vector<std::string> & ipAddresses);
622 inline const std::string
GetName(
void)
const {
627 bool SetInterfaceProvidedProxyAccessInfo(
const ConnectionIDType connectionID,
const std::string & endpointInfo);
630 bool GetGCMProcTimeSyncInfo(std::vector<std::string> &processNames, std::vector<double> &timeOffsets);
633 void ToStream(std::ostream & outputStream)
const;
637 void ToStreamDot(std::ostream & outputStream)
const;
642 #endif // _mtsManagerLocal_h
#define CISST_EXPORT
Definition: cmnExportMacros.h:50
virtual bool GetInterfaceProvidedDescription(const std::string &serverComponentName, const std::string &providedInterfaceName, mtsInterfaceProvidedDescription &providedInterfaceDescription, const std::string &listenerID="")=0
Extract all information about provided interface such as command objects and event generators...
virtual bool RemoveComponentProxy(const std::string &componentProxyName, const std::string &listenerID="")=0
Define a Mutex object.
Definition: osaMutex.h:48
#define CISST_DEPRECATED
Definition: cmnPortability.h:310
virtual bool GetInterfaceRequiredDescription(const std::string &componentName, const std::string &requiredInterfaceName, mtsInterfaceRequiredDescription &requiredInterfaceDescription, const std::string &listenerID="")=0
Extract all information about required interface such as function objects and event handlers...
virtual const std::string GetProcessName(const std::string &listenerID="") const =0
ConfigurationType GetConfiguration(void) const
Definition: mtsManagerLocal.h:531
#define CMN_UNUSED(argument)
Definition: cmnPortability.h:479
static const std::string ProcessNameOfLCMDefault
Definition: mtsManagerLocal.h:479
void SetMainThreadId(void)
Definition: mtsManagerLocal.h:543
virtual bool ConnectClientSideInterface(const mtsDescriptionConnection &description, const std::string &listenerID="")=0
Connect interfaces at client side.
mtsTaskContinuous * GetCurrentMainTask(void) const
Definition: mtsManagerLocal.h:560
Definition: mtsManagerGlobalInterface.h:43
Declaration of cmnNamedMap.
unsigned int ConnectionIDType
Definition: mtsForwardDeclarations.h:150
Definition: mtsInterfaceCommon.h:1046
mtsManagerComponentServer * Server
Definition: mtsManagerLocal.h:186
Declaration of osaThread.
Define a thread object.
Definition: osaThread.h:164
Declaration of units and unit conversion methodsThis file include the definition and implementation o...
virtual bool CreateInterfaceRequiredProxy(const std::string &clientComponentProxyName, const mtsInterfaceRequiredDescription &requiredInterfaceDescription, const std::string &listenerID="")=0
virtual bool ConnectServerSideInterface(const mtsDescriptionConnection &description, const std::string &listenerID="")=0
Connect interfaces at server side.
bool IsGCMActive(void) const
Definition: mtsManagerLocal.h:536
Definition: mtsManagerLocal.h:89
virtual bool RemoveInterfaceRequiredProxy(const std::string &componentProxyName, const std::string &requiredInterfaceProxyName, const std::string &listenerID="")=0
Declaration of mtsManagerGlobalInterfaceThis class declares an interface used by local component mana...
CISST_EXPORT osaThreadId osaGetCurrentThreadId(void)
Declaration of Manager Component ClientThis class defines the manager component client which is manag...
Definition: mtsManagerComponentClient.h:41
osaThreadId GetMainThreadId(void) const
Definition: mtsManagerLocal.h:551
virtual void GetNamesOfFunctions(std::vector< std::string > &namesOfFunctions, const std::string &componentName, const std::string &requiredInterfaceName, const std::string &listenerID="")=0
virtual void GetDescriptionOfEventGenerator(std::string &description, const std::string &componentName, const std::string &providedInterfaceName, const std::string &eventGeneratorName, const std::string &listenerID="")=0
virtual void GetNamesOfCommands(std::vector< std::string > &namesOfCommands, const std::string &componentName, const std::string &providedInterfaceName, const std::string &listenerID="")=0
Definition: mtsInterfaceCommon.h:928
Definition: mtsParameterTypes.h:533
virtual bool RemoveInterfaceProvidedProxy(const std::string &componentProxyName, const std::string &providedInterfaceProxyName, const std::string &listenerID="")=0
virtual void ToStream(std::ostream &outputStream) const
Forward declarations and #define for cisstMultiTask.
const std::string & GetIPAddress(void) const
Definition: mtsManagerLocal.h:615
Definition: mtsComponent.h:150
virtual void GetDescriptionOfEventHandler(std::string &description, const std::string &componentName, const std::string &requiredInterfaceName, const std::string &eventHandlerName, const std::string &listenerID="")=0
virtual void GetDescriptionOfFunction(std::string &description, const std::string &componentName, const std::string &requiredInterfaceName, const std::string &functionName, const std::string &listenerID="")=0
ThreadId type.
Definition: osaThread.h:77
Definition: mtsComponentState.h:34
virtual void GetDescriptionOfCommand(std::string &description, const std::string &componentName, const std::string &providedInterfaceName, const std::string &commandName, const std::string &listenerID="")=0
#define CMN_DECLARE_SERVICES(hasDynamicCreation, lod)
Definition: cmnClassRegisterMacros.h:116
Declaration of osaThreadBuddy.
virtual bool CreateComponentProxy(const std::string &componentProxyName, const std::string &listenerID="")=0
void SetMainThreadId(const osaThreadId &threadId)
Definition: mtsManagerLocal.h:548
Definition of mtsManagerLocalInterfaceThis class defines an interface used by the global component ma...
Definition: mtsManagerComponentServer.h:45
static const std::string ProcessNameOfLCMWithGCM
Definition: mtsManagerLocal.h:482
Class for relative time.
Definition: osaTimeServer.h:73
void SetGCMConnected(const bool connected)
Definition: mtsManagerLocal.h:355
virtual void GetNamesOfEventGenerators(std::vector< std::string > &namesOfEventGenerators, const std::string &componentName, const std::string &providedInterfaceName, const std::string &listenerID="")=0
Definition: mtsManagerLocal.h:108
ConfigurationType
Definition: mtsManagerLocal.h:106
Definition: osaThreadSignal.h:40
Definition: mtsTaskContinuous.h:77
Definition: mtsManagerGlobal.h:51
virtual void GetNamesOfEventHandlers(std::vector< std::string > &namesOfEventHandlers, const std::string &componentName, const std::string &requiredInterfaceName, const std::string &listenerID="")=0
const double cmn_minute
Definition: cmnUnits.h:217
const int CMN_NO_DYNAMIC_CREATION
Definition: cmnClassRegisterMacros.h:328
#define CMN_DECLARE_SERVICES_INSTANTIATION(className)
Definition: cmnClassRegisterMacros.h:202
virtual bool CreateInterfaceProvidedProxy(const std::string &serverComponentProxyName, const mtsInterfaceProvidedDescription &providedInterfaceDescription, const std::string &listenerID="")=0
Definition: mtsManagerLocal.h:110
Definition: mtsManagerLocalInterface.h:54
const std::string GetName(void) const
Definition: mtsManagerLocal.h:622
#define CMN_LOG_ALLOW_DEFAULT
Definition: cmnLogLoD.h:76
mtsManagerComponentClient * Client
Definition: mtsManagerLocal.h:185
const std::string GetProcessName(const std::string &CMN_UNUSED(listenerID)="") const
Definition: mtsManagerLocal.h:526