YARP
Yet Another Robot Platform
manager.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2006-2020 Istituto Italiano di Tecnologia (IIT)
3  * All rights reserved.
4  *
5  * This software may be modified and distributed under the terms of the
6  * BSD-3-Clause license. See the accompanying LICENSE file for details.
7  */
8 
9 #ifndef YARP_MANAGER_MANAGER
10 #define YARP_MANAGER_MANAGER
11 
12 #include <yarp/manager/ymm-types.h>
13 #include <yarp/manager/kbase.h>
14 #include <yarp/manager/utility.h>
17 
18 namespace yarp {
19 namespace manager {
20 
24 class Manager : public MEvent{
25 
26 public:
27  Manager( bool withWatchDog=false);
28  Manager(const char* szModPath, const char* szAppPath,
29  const char* szResPath, bool withWatchDog=false);
30  ~Manager() override;
31 
32  bool addApplication(const char* szFileName, char** szAppName_=nullptr, bool modifyName=false);
33  bool addApplications(const char* szPath);
34  bool addModule(const char* szFileName);
35  bool addModules(const char* szPath);
36  bool addResource(const char* szFileName);
37  bool addResources(const char* szPath);
38 
39  bool removeApplication(const char* szFileName, const char* szAppName);
40  bool removeModule(const char* szModName);
41  bool removeResource(const char* szResName);
42 
43  bool loadApplication(const char* szAppName);
44  bool saveApplication(const char* szAppName, const char* fileName=nullptr);
45  bool updateExecutable(unsigned int id, const char* szparam,
46  const char* szhost, const char* szstdio,
47  const char* szworkdir, const char* szenv );
48  bool updateConnection(unsigned int id, const char* from,
49  const char* to, const char* carrier);
50 
51  Node* getNode(std::string appName);
52 
53  bool run();
54  bool run(unsigned int id, bool async=false);
55  bool stop();
56  bool stop(unsigned int id, bool async=false);
57  bool kill();
58  bool kill(unsigned int id, bool async=false);
59  bool connect();
60  bool connect(unsigned int id);
61  bool disconnect();
62  bool disconnect(unsigned int id);
63  bool rmconnect(unsigned int id);
64  bool rmconnect();
65  bool running() { return allRunning(); }
66  bool running(unsigned int id);
67  bool suspended() { return allStopped(); }
68  bool suspended(unsigned int id);
69  bool connected();
70  bool connected(unsigned int id);
71  bool checkDependency();
72  bool exist(unsigned int id);
73  bool existPortFrom(unsigned int id);
74  bool existPortTo(unsigned int id);
75  bool attachStdout(unsigned int id);
76  bool detachStdout(unsigned int id);
77  bool updateResources();
78  bool updateResource(const char* szName);
79  bool waitingModuleRun(unsigned int id);
80  bool waitingModuleStop(unsigned int id);
81  bool waitingModuleKill(unsigned int id);
82  bool loadBalance();
83 
84  void setDefaultBroker(const char* szBroker) { if(szBroker) { strDefBroker = szBroker; } }
85  const char* defaultBroker() { return strDefBroker.c_str(); }
86  ExecutablePContainer& getExecutables() { return runnables; }
87  Executable* getExecutableById(size_t id);
88  bool switchBroker(size_t id);
89  CnnContainer& getConnections() { return connections;}
90  ResourcePContainer& getResources() { return resources; }
91  const char* getApplicationName() { return strAppName.c_str(); }
92 
93  //const char* getDataPort(const char* szDataType);
94 
95  void enableRestrictedMode() { bRestricted = true; }
96  void disableRestrictedMode() { bRestricted = false; }
97  void enableAutoConnect() { bAutoConnect = true; }
98  void disableAutoConnect() { bAutoConnect = false; }
99  void enableAutoDependency() { bAutoDependancy = true; }
100  void disableAutoDependency() { bAutoDependancy = false; }
101  void enableWatchDog() { bWithWatchDog = true; }
102  void disableWatchod() { bWithWatchDog = false; }
103  bool exportDependencyGraph(const char* szFileName) {
104  return knowledge.exportAppGraph(szFileName);
105  }
106 
107  KnowledgeBase* getKnowledgeBase() { return &knowledge; }
108  ErrorLogger* getLogger() { return logger;}
109 
110 protected:
111  void onExecutableStart(void* which) override;
112  void onExecutableStop(void* which) override;
113  void onExecutableDied(void* which) override;
114  void onExecutableFailed(void* which) override;
115  void onCnnStablished(void* which) override;
116  void onCnnFailed(void* which) override;
117  void onError(void* which) override;
118  void onExecutableStdout(void* which, const char* msg) override;
119 
120 
121 private:
122  bool bWithWatchDog;
123  bool bAutoDependancy;
124  bool bAutoConnect;
125  bool bRestricted;
126  ErrorLogger* logger;
127  std::string strAppName;
128  std::string strDefBroker;
129  YarpBroker connector;
130  std::vector<std::string> listOfXml;
131 
132  KnowledgeBase knowledge;
133  ExecutablePContainer runnables;
134  CnnContainer connections;
135  ModulePContainer modules;
136  ResourcePContainer resources;
137 
138  bool createKnowledgeBase(AppLoader &appLoader);
139  void clearExecutables();
140  bool isServer(Module* module);
141  bool connectExtraPorts();
142  bool checkPortsAvailable(Broker* broker);
143  bool allRunning();
144  bool oneRunning();
145  bool allStopped();
146  bool prepare(bool silent=true);
147  bool timeout(double base, double t);
148  bool updateResource(GenericResource* resource);
149  Broker* createBroker(Module* module);
150  bool removeBroker(Executable* exe);
151 };
152 
153 } // namespace yarp
154 } // namespace manager
155 
156 
157 #endif // __YARP_MANAGER_MANAGER__
float t
static RFModule * module
Definition: RFModule.cpp:234
Abstract Class AppLoader.
Class Broker.
Definition: broker.h:34
Singleton class ErrorLogger.
Definition: utility.h:60
Class Executable.
Definition: executable.h:75
Class KnowledgeBase.
Definition: kbase.h:36
bool exportAppGraph(const char *szFileName)
Definition: kbase.h:117
Class Manager.
Definition: manager.h:24
void onExecutableStdout(void *which, const char *msg) override
Definition: manager.cpp:1295
void onExecutableDied(void *which) override
Definition: manager.cpp:1293
void enableAutoConnect()
Definition: manager.h:97
const char * defaultBroker()
Definition: manager.h:85
void onExecutableStop(void *which) override
Definition: manager.cpp:1291
Manager(bool withWatchDog=false)
Class Manager.
Definition: manager.cpp:42
bool removeApplication(const char *szFileName, const char *szAppName)
Definition: manager.cpp:173
bool updateResource(const char *szName)
Definition: manager.cpp:582
CnnContainer & getConnections()
Definition: manager.h:89
bool detachStdout(unsigned int id)
Definition: manager.cpp:1269
void onCnnFailed(void *which) override
Definition: manager.cpp:1296
bool addModule(const char *szFileName)
Definition: manager.cpp:124
bool updateConnection(unsigned int id, const char *from, const char *to, const char *carrier)
Definition: manager.cpp:436
void disableRestrictedMode()
Definition: manager.h:96
bool attachStdout(unsigned int id)
Definition: manager.cpp:1247
ExecutablePContainer & getExecutables()
Definition: manager.h:86
void setDefaultBroker(const char *szBroker)
Definition: manager.h:84
bool removeModule(const char *szModName)
Definition: manager.cpp:190
const char * getApplicationName()
Definition: manager.h:91
ResourcePContainer & getResources()
Definition: manager.h:90
bool existPortFrom(unsigned int id)
Definition: manager.cpp:694
bool addModules(const char *szPath)
Definition: manager.cpp:136
bool addResources(const char *szPath)
Definition: manager.cpp:161
Node * getNode(std::string appName)
Definition: manager.cpp:463
bool addApplication(const char *szFileName, char **szAppName_=nullptr, bool modifyName=false)
Definition: manager.cpp:91
bool exist(unsigned int id)
Definition: manager.cpp:469
bool existPortTo(unsigned int id)
Definition: manager.cpp:708
void onError(void *which) override
Definition: manager.cpp:1297
void disableAutoDependency()
Definition: manager.h:100
bool switchBroker(size_t id)
Definition: manager.cpp:280
bool addResource(const char *szFileName)
Definition: manager.cpp:148
bool updateExecutable(unsigned int id, const char *szparam, const char *szhost, const char *szstdio, const char *szworkdir, const char *szenv)
Definition: manager.cpp:410
bool waitingModuleKill(unsigned int id)
Definition: manager.cpp:677
void enableAutoDependency()
Definition: manager.h:99
bool waitingModuleStop(unsigned int id)
Definition: manager.cpp:662
bool removeResource(const char *szResName)
Definition: manager.cpp:207
bool addApplications(const char *szPath)
Definition: manager.cpp:108
void onExecutableFailed(void *which) override
Definition: manager.cpp:1294
~Manager() override
Definition: manager.cpp:84
KnowledgeBase * getKnowledgeBase()
Definition: manager.h:107
bool loadApplication(const char *szAppName)
Definition: manager.cpp:226
bool exportDependencyGraph(const char *szFileName)
Definition: manager.h:103
bool saveApplication(const char *szAppName, const char *fileName=nullptr)
Definition: manager.cpp:251
void onCnnStablished(void *which) override
Definition: manager.cpp:1292
ErrorLogger * getLogger()
Definition: manager.h:108
bool waitingModuleRun(unsigned int id)
Definition: manager.cpp:645
void disableAutoConnect()
Definition: manager.h:98
Executable * getExecutableById(size_t id)
Definition: manager.cpp:268
void enableRestrictedMode()
Definition: manager.h:95
void onExecutableStart(void *which) override
Definition: manager.cpp:1290
Class Module.
Definition: module.h:103
a Node of a Graph
Definition: node.h:68
std::vector< Executable * > ExecutablePContainer
Definition: executable.h:170
std::vector< Module * > ModulePContainer
Definition: module.h:234
std::vector< GenericResource * > ResourcePContainer
Definition: resource.h:62
std::vector< Connection > CnnContainer
Definition: application.h:153
The main, catch-all namespace for YARP.
Definition: environment.h:18