ndmspc  v1.2.0-0.1.rc3
NDimensionalIpcRunner.h
1 #ifndef Ndmspc_NDimensionalIpcRunner_H
2 #define Ndmspc_NDimensionalIpcRunner_H
3 
4 #include <string>
5 #include <vector>
6 #include <sys/types.h>
7 #include <Rtypes.h>
8 
9 namespace Ndmspc {
10 
11 class NThreadData;
12 
14  public:
15  static bool SendFrames(void * socket, const std::vector<std::string> & frames);
16  static bool ReceiveFrames(void * socket, std::vector<std::string> & outFrames);
17 
18  static std::string BuildWorkerIdentity(size_t workerIndex);
19  static std::string SerializeCoords(const std::vector<int> & coords);
20  static std::string SerializeIds(const std::vector<Long64_t> & ids);
21 
22  static int WorkerLoop(const std::string & endpoint, size_t workerIndex, NThreadData * worker);
23  static int TaskLoop(void * dealer, size_t workerIndex, NThreadData * worker);
24  static bool WaitForChildProcesses(const std::vector<pid_t> & pids, int timeoutMs = -1);
25  static void CleanupChildProcesses(const std::vector<pid_t> & pids);
26 
27  private:
28  static std::vector<int> ParseCoords(const std::string & coordsStr);
29  static std::vector<Long64_t> ParseIds(const std::string & idsStr);
30 };
31 
32 } // namespace Ndmspc
33 
34 #endif
Thread-local data object for NDMSPC processing.
Definition: NThreadData.h:21