YARP
Yet Another Robot Platform
manager.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef YARP_MANAGER_MANAGER
7 #define YARP_MANAGER_MANAGER
8 
10 #include <yarp/manager/kbase.h>
11 #include <yarp/manager/utility.h>
14 
15 namespace yarp {
16 namespace manager {
17 
21 class Manager : public MEvent{
22 
23 public:
24  Manager( bool withWatchDog=false);
25  Manager(const char* szModPath, const char* szAppPath,
26  const char* szResPath, bool withWatchDog=false);
27  ~Manager() override;
28 
29  bool addApplication(const char* szFileName, char** szAppName_=nullptr, bool modifyName=false);
30  bool addApplications(const char* szPath);
31  bool addModule(const char* szFileName);
32  bool addModules(const char* szPath);
33  bool addResource(const char* szFileName);
34  bool addResources(const char* szPath);
35 
36  bool removeApplication(const char* szFileName, const char* szAppName);
37  bool removeModule(const char* szModName);
38  bool removeResource(const char* szResName);
39 
40  bool loadApplication(const char* szAppName);
41  bool saveApplication(const char* szAppName, const char* fileName=nullptr);
42  bool updateExecutable(unsigned int id, const char* szparam,
43  const char* szhost, const char* szstdio,
44  const char* szworkdir, const char* szenv );
45  bool updateConnection(unsigned int id, const char* from,
46  const char* to, const char* carrier);
47 
48  Node* getNode(std::string appName);
49 
50  bool run();
51  bool run(unsigned int id, bool async=false);
52  bool stop();
53  bool stop(unsigned int id, bool async=false);
54  bool kill();
55  bool kill(unsigned int id, bool async=false);
56  bool connect();
57  bool connect(unsigned int id);
58  bool disconnect();
59  bool disconnect(unsigned int id);
60  bool rmconnect(unsigned int id);
61  bool rmconnect();
62  bool running() { return allRunning(); }
63  bool running(unsigned int id);
64  bool suspended() { return allStopped(); }
65  bool suspended(unsigned int id);
66  bool connected();
67  bool connected(unsigned int id);
68  bool checkDependency();
69  bool exist(unsigned int id);
70  bool existPortFrom(unsigned int id);
71  bool existPortTo(unsigned int id);
72  bool attachStdout(unsigned int id);
73  bool detachStdout(unsigned int id);
74  bool updateResources();
75  bool updateResource(const char* szName);
76  bool waitingModuleRun(unsigned int id);
77  bool waitingModuleStop(unsigned int id);
78  bool waitingModuleKill(unsigned int id);
79  bool loadBalance();
80 
81  void setDefaultBroker(const char* szBroker) { if(szBroker) { strDefBroker = szBroker; } }
82  const char* defaultBroker() { return strDefBroker.c_str(); }
83  ExecutablePContainer& getExecutables() { return runnables; }
84  Executable* getExecutableById(size_t id);
85  bool switchBroker(size_t id);
86  CnnContainer& getConnections() { return connections;}
87  ResourcePContainer& getResources() { return resources; }
88  const char* getApplicationName() { return strAppName.c_str(); }
89 
90  //const char* getDataPort(const char* szDataType);
91 
92  void enableRestrictedMode() { bRestricted = true; }
93  void disableRestrictedMode() { bRestricted = false; }
94  void enableAutoConnect() { bAutoConnect = true; }
95  void disableAutoConnect() { bAutoConnect = false; }
96  void enableAutoDependency() { bAutoDependancy = true; }
97  void disableAutoDependency() { bAutoDependancy = false; }
98  void enableWatchDog() { bWithWatchDog = true; }
99  void disableWatchod() { bWithWatchDog = false; }
100  bool exportDependencyGraph(const char* szFileName) {
101  return knowledge.exportAppGraph(szFileName);
102  }
103 
104  KnowledgeBase* getKnowledgeBase() { return &knowledge; }
105  ErrorLogger* getLogger() { return logger;}
106 
107 protected:
108  void onExecutableStart(void* which) override;
109  void onExecutableStop(void* which) override;
110  void onExecutableDied(void* which) override;
111  void onExecutableFailed(void* which) override;
112  void onCnnStablished(void* which) override;
113  void onCnnFailed(void* which) override;
114  void onError(void* which) override;
115  void onExecutableStdout(void* which, const char* msg) override;
116 
117 
118 private:
119  bool bWithWatchDog;
120  bool bAutoDependancy;
121  bool bAutoConnect;
122  bool bRestricted;
123  ErrorLogger* logger;
124  std::string strAppName;
125  std::string strDefBroker;
126  YarpBroker connector;
127  std::vector<std::string> listOfXml;
128 
129  KnowledgeBase knowledge;
130  ExecutablePContainer runnables;
131  CnnContainer connections;
132  ModulePContainer modules;
133  ResourcePContainer resources;
134 
135  bool createKnowledgeBase(AppLoader &appLoader);
136  void clearExecutables();
137  bool isServer(Module* module);
138  bool connectExtraPorts();
139  bool checkPortsAvailable(Broker* broker);
140  bool allRunning();
141  bool oneRunning();
142  bool allStopped();
143  bool prepare(bool silent=true);
144  bool timeout(double base, double t);
145  bool updateResource(GenericResource* resource);
146  Broker* createBroker(Module* module);
147  bool removeBroker(Executable* exe);
148 };
149 
150 } // namespace yarp
151 } // namespace manager
152 
153 
154 #endif // __YARP_MANAGER_MANAGER__
float t
static RFModule * module
Definition: RFModule.cpp:231
Abstract Class AppLoader.
Class Broker.
Definition: broker.h:31
Singleton class ErrorLogger.
Definition: utility.h:57
Class Executable.
Definition: executable.h:72
Class KnowledgeBase.
Definition: kbase.h:33
bool exportAppGraph(const char *szFileName)
Definition: kbase.h:114
Class Manager.
Definition: manager.h:21
void onExecutableStdout(void *which, const char *msg) override
Definition: manager.cpp:1380
void onExecutableDied(void *which) override
Definition: manager.cpp:1378
void enableAutoConnect()
Definition: manager.h:94
const char * defaultBroker()
Definition: manager.h:82
void onExecutableStop(void *which) override
Definition: manager.cpp:1376
Manager(bool withWatchDog=false)
Class Manager.
Definition: manager.cpp:38
bool removeApplication(const char *szFileName, const char *szAppName)
Definition: manager.cpp:184
bool updateResource(const char *szName)
Definition: manager.cpp:606
CnnContainer & getConnections()
Definition: manager.h:86
bool detachStdout(unsigned int id)
Definition: manager.cpp:1353
void onCnnFailed(void *which) override
Definition: manager.cpp:1381
bool addModule(const char *szFileName)
Definition: manager.cpp:127
bool updateConnection(unsigned int id, const char *from, const char *to, const char *carrier)
Definition: manager.cpp:456
void disableRestrictedMode()
Definition: manager.h:93
bool attachStdout(unsigned int id)
Definition: manager.cpp:1331
ExecutablePContainer & getExecutables()
Definition: manager.h:83
void setDefaultBroker(const char *szBroker)
Definition: manager.h:81
bool removeModule(const char *szModName)
Definition: manager.cpp:202
const char * getApplicationName()
Definition: manager.h:88
ResourcePContainer & getResources()
Definition: manager.h:87
bool existPortFrom(unsigned int id)
Definition: manager.cpp:731
bool addModules(const char *szPath)
Definition: manager.cpp:141
bool addResources(const char *szPath)
Definition: manager.cpp:170
Node * getNode(std::string appName)
Definition: manager.cpp:483
bool addApplication(const char *szFileName, char **szAppName_=nullptr, bool modifyName=false)
Definition: manager.cpp:90
bool exist(unsigned int id)
Definition: manager.cpp:489
bool existPortTo(unsigned int id)
Definition: manager.cpp:752
void onError(void *which) override
Definition: manager.cpp:1382
void disableAutoDependency()
Definition: manager.h:97
bool switchBroker(size_t id)
Definition: manager.cpp:295
bool addResource(const char *szFileName)
Definition: manager.cpp:155
bool updateExecutable(unsigned int id, const char *szparam, const char *szhost, const char *szstdio, const char *szworkdir, const char *szenv)
Definition: manager.cpp:430
bool waitingModuleKill(unsigned int id)
Definition: manager.cpp:711
void enableAutoDependency()
Definition: manager.h:96
bool waitingModuleStop(unsigned int id)
Definition: manager.cpp:693
bool removeResource(const char *szResName)
Definition: manager.cpp:220
bool addApplications(const char *szPath)
Definition: manager.cpp:110
void onExecutableFailed(void *which) override
Definition: manager.cpp:1379
~Manager() override
Definition: manager.cpp:83
KnowledgeBase * getKnowledgeBase()
Definition: manager.h:104
bool loadApplication(const char *szAppName)
Definition: manager.cpp:240
bool exportDependencyGraph(const char *szFileName)
Definition: manager.h:100
bool saveApplication(const char *szAppName, const char *fileName=nullptr)
Definition: manager.cpp:266
void onCnnStablished(void *which) override
Definition: manager.cpp:1377
ErrorLogger * getLogger()
Definition: manager.h:105
bool waitingModuleRun(unsigned int id)
Definition: manager.cpp:673
void disableAutoConnect()
Definition: manager.h:95
Executable * getExecutableById(size_t id)
Definition: manager.cpp:283
void enableRestrictedMode()
Definition: manager.h:92
void onExecutableStart(void *which) override
Definition: manager.cpp:1375
Class Module.
Definition: module.h:100
a Node of a Graph
Definition: node.h:65
std::vector< Executable * > ExecutablePContainer
Definition: executable.h:167
std::vector< Module * > ModulePContainer
Definition: module.h:231
std::vector< GenericResource * > ResourcePContainer
Definition: resource.h:59
std::vector< Connection > CnnContainer
Definition: application.h:150
The main, catch-all namespace for YARP.
Definition: dirs.h:16