orocos_cpp
Spawner.hpp
Go to the documentation of this file.
1 #ifndef SPAWNER_H
2 #define SPAWNER_H
3 
4 #include <unistd.h>
5 #include <string>
6 #include <vector>
7 #include <base/Time.hpp>
8 #include "NameService.hpp"
9 #include "Deployment.hpp"
10 #include <boost/noncopyable.hpp>
11 
12 namespace orocos_cpp
13 {
14 
15 class Spawner : public boost::noncopyable
16 {
17  std::string logDir;
18 
19  //list of tasks that were spawned, but are not yet reachable.
20  std::vector<std::string> notReadyList;
21 
22  NameService *nameService;
23 
24 
28  Spawner();
29 
30 public:
32  {
33  mutable bool isRunning;
34  pid_t pid;
35  void redirectOutput(const std::string &filename);
36  std::string processName;
37 
38  Deployment *deployment;
39  public:
40  ProcessHandle(Deployment *deployment, bool redirectOutput, const std::string &logDir);
41 
42  const Deployment &getDeployment() const;
43  bool alive() const;
44  void sendSigInt() const;
45  void sendSigTerm() const;
46  void sendSigKill() const;
47  };
48 
49 public:
50 
55  static Spawner &getInstace();
56 
66  ProcessHandle &spawnTask(const std::string &cmp1, const std::string &as = std::string(), bool redirectOutput = true);
67 
76  ProcessHandle &spawnDeployment(const std::string &dplName, bool redirectOutput = true);
77 
86  ProcessHandle &spawnDeployment(Deployment *deployment, bool redirectOutput = true);
87 
92  bool checkAllProcesses();
93 
98  bool allReady();
99 
106  void waitUntilAllReady(const base::Time &timeout);
107 
113  void killAll();
114 
118  void sendSigTerm();
119 
123  std::vector<const Deployment *> getRunningDeployments();
124 
125 
129  bool isRunning(const Deployment *instance);
130 
135  void setLogDirectory(const std::string& log_folder);
136 
137 private:
138 
139  std::vector<ProcessHandle *> handles;
140 };
141 }//end of namespace.
142 
143 #endif // SPAWNER_H
void setLogDirectory(const std::string &log_folder)
Definition: Spawner.cpp:460
static Spawner & getInstace()
Definition: Spawner.cpp:82
Definition: ConfigurationHelper.hpp:13
std::vector< const Deployment * > getRunningDeployments()
Definition: Spawner.cpp:435
Definition: Spawner.hpp:31
bool allReady()
Definition: Spawner.cpp:304
Definition: NameService.hpp:15
bool alive() const
Definition: Spawner.cpp:174
ProcessHandle & spawnTask(const std::string &cmp1, const std::string &as=std::string(), bool redirectOutput=true)
Definition: Spawner.cpp:256
Definition: Spawner.hpp:15
void sendSigTerm() const
Definition: Spawner.cpp:246
void sendSigInt() const
Definition: Spawner.cpp:238
void sendSigKill() const
Definition: Spawner.cpp:230
const Deployment & getDeployment() const
Definition: Spawner.cpp:225
ProcessHandle & spawnDeployment(const std::string &dplName, bool redirectOutput=true)
Definition: Spawner.cpp:282
void killAll()
Definition: Spawner.cpp:342
ProcessHandle(Deployment *deployment, bool redirectOutput, const std::string &logDir)
Definition: Spawner.cpp:95
void waitUntilAllReady(const base::Time &timeout)
Definition: Spawner.cpp:321
Definition: Deployment.hpp:12
bool checkAllProcesses()
Definition: Spawner.cpp:289