MsPASS C++ API  2.4.1.dev4+g92330b7a
Defines the C++ API for MsPASS
Loading...
Searching...
No Matches
ProcessManager.h
1#ifndef _PROCESS_MANAGER_H_
2#define _PROCESS_MANAGER_H_
3#include <boost/archive/text_iarchive.hpp>
4#include <boost/archive/text_oarchive.hpp>
5#include <boost/serialization/map.hpp>
6#include <boost/serialization/serialization.hpp>
7#include <boost/serialization/vector.hpp>
8#include <boost/uuid/uuid.hpp>
9#include <boost/uuid/uuid_generators.hpp>
10#include <boost/uuid/uuid_io.hpp>
11#include <boost/uuid/uuid_serialize.hpp>
12#include <map>
13#include <vector>
14namespace mspass {
15namespace utility {
44public:
50 AlgorithmDefinition() : nm(), myid(), input_type(), output_type() {};
65 AlgorithmDefinition(const std::string name, const std::string typin,
66 const std::string typout, const std::string id) {
67 nm = name;
68 myid = id;
69 input_type = typin;
70 output_type = typout;
71 };
74 nm = parent.nm;
75 myid = parent.myid;
76 input_type = parent.input_type;
77 output_type = parent.output_type;
78 };
80 std::string name() const { return nm; };
88 std::string id() const { return myid; };
96 void set_id(const std::string id) { myid = id; };
97 // void set_name(const string name){nm=name;};
100 if (this == &parent) {
101 nm = parent.nm;
102 myid = parent.myid;
103 input_type = parent.input_type;
104 output_type = parent.output_type;
105 }
106 return *this;
107 };
108
109private:
110 std::string nm;
111 std::string myid;
112 std::string input_type;
113 std::string output_type;
114 friend boost::serialization::access;
115 template <class Archive>
116 void serialize(Archive &ar, const unsigned int version) {
117 ar & nm;
118 ar & myid;
119 };
120};
123public:
127 ProcessManager(std::string fname);
129 AlgorithmDefinition algorithm(const std::string name,
130 const size_t instance = 0) const;
132 std::string jobname() const { return jobnm; };
134 std::string jobid() const { return boost::uuids::to_string(job_uuid); };
146 std::string new_newid() {
147 boost::uuids::uuid id;
148 id = gen();
149 return boost::uuids::to_string(id);
150 }
151
152private:
153 std::string jobnm;
154 boost::uuids::uuid job_uuid;
155 boost::uuids::random_generator gen;
156 std::map<std::string, std::vector<AlgorithmDefinition>> algs;
157 friend boost::serialization::access;
158 template <class Archive>
159 void serialize(Archive &ar, const unsigned int version) {
160 ar & jobnm;
161 ar & job_uuid;
162 ar & algs;
163 };
164};
165} // namespace utility
166} // namespace mspass
167#endif
Lightweight data structure to completely describe an algorithm.
Definition ProcessManager.h:43
AlgorithmDefinition(const AlgorithmDefinition &parent)
Definition ProcessManager.h:73
AlgorithmDefinition()
Definition ProcessManager.h:50
AlgorithmDefinition & operator=(const AlgorithmDefinition &parent)
Definition ProcessManager.h:99
std::string name() const
Definition ProcessManager.h:80
void set_id(const std::string id)
Definition ProcessManager.h:96
AlgorithmDefinition(const std::string name, const std::string typin, const std::string typout, const std::string id)
Definition ProcessManager.h:65
std::string id() const
return the id as a string.
Definition ProcessManager.h:88
Manager for process-level algorithm and job identifiers.
Definition ProcessManager.h:122
std::string jobname() const
Definition ProcessManager.h:132
std::string jobid() const
Definition ProcessManager.h:134
std::string new_newid()
Get a new UUID to define unique job run.
Definition ProcessManager.h:146
AlgorithmDefinition algorithm(const std::string name, const size_t instance=0) const
Definition ProcessManager.cc:46
ProcessManager()
Definition ProcessManager.cc:10