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