1 #ifndef _Belle2_ProcessController_h
2 #define _Belle2_ProcessController_h
4 #include "daq/slc/readout/RunInfoBuffer.h"
6 #include "daq/slc/runcontrol/RCCallback.h"
8 #include "daq/slc/system/PThread.h"
9 #include "daq/slc/system/Process.h"
10 #include "daq/slc/system/Mutex.h"
32 m_callback = callback;
40 bool init(
const std::string& parname,
int nodeid = 0);
42 bool load(
int timeout);
43 bool start(
int expno,
int runno);
54 bool abort(
unsigned int timeout = 60);
56 const std::string& getName() {
return m_name; }
57 const std::string& getParName() {
return m_parname; }
58 const std::string& getExecutable() {
return m_exename; }
60 RCCallback* getCallback() {
return m_callback; }
61 const Process& getProcess()
const {
return m_process; }
62 Process& getProcess() {
return m_process; }
63 void setCallback(
RCCallback* callback) { m_callback = callback; }
64 void setName(
const std::string& name) { m_name = name; }
65 void setExecutable(
const std::string& exe) { m_exename = exe; }
66 void addArgument(
const std::string& arg) { m_arg_v.push_back(arg); }
67 void addArgument(
const char* format, ...);
69 void addArgument(T arg);
70 void clearArguments() { m_arg_v = std::vector<std::string>(); }
71 bool isAlive()
const {
return m_process.isAlive(); }
72 bool waitReady(
int timeout);
75 void lock() { m_mutex.lock(); }
76 void unlock() { m_mutex.unlock(); }
81 std::string m_parname;
83 std::string m_exename;
84 std::vector<std::string> m_arg_v;
87 std::string m_message;
95 inline void ProcessController::addArgument(T arg)
97 std::stringstream ss; ss << arg;
98 m_arg_v.push_back(ss.str());
107 m_iopipe[0] = iopipe[0];
108 m_iopipe[1] = iopipe[1];