neic-glass3  1.4.6
input.h
Go to the documentation of this file.
1 /*****************************************
2  * This file is documented for Doxygen.
3  * If you modify this file please update
4  * the comments so that Doxygen will still
5  * be able to work.
6  ****************************************/
7 #ifndef INPUT_H
8 #define INPUT_H
9 
10 #include <json.h>
11 #include <threadbaseclass.h>
12 #include <inputinterface.h>
13 #include <associatorinterface.h>
14 #include <gpickparser.h>
15 #include <jsonparser.h>
16 #include <ccparser.h>
17 #include <simplepickparser.h>
18 #include <queue.h>
19 
20 #include <thread>
21 #include <mutex>
22 #include <future>
23 #include <string>
24 #include <sstream>
25 #include <iostream>
26 #include <fstream>
27 #include <vector>
28 #include <memory>
29 
30 namespace glass3 {
31 
39 namespace input {
40 
41 #define GPICK_TYPE "gpick"
42 #define JSON_TYPE "json"
43 #define CC_TYPE "dat"
44 #define SIMPLE_TYPE "txt"
45 
46 
66 class Input : public glass3::util::iInput,
68  public:
75  Input();
76 
86  explicit Input(std::shared_ptr<const json::Object> config);
87 
94  ~Input();
95 
107  bool setup(std::shared_ptr<const json::Object> config) override;
108 
116  void clear() override;
117 
126  std::shared_ptr<json::Object> getInputData() override;
127 
137  int getInputDataCount() override;
138 
148  void setInputDataMaxSize(int size);
149 
158  int getInputDataMaxSize();
159 
160  protected:
167  glass3::util::WorkState work() override;
168 
179  virtual std::shared_ptr<json::Object> parse(std::string inputType,
180  std::string inputMessage);
181 
192  virtual std::string fetchRawData(std::string* pOutType) = 0;
193 
194  private:
199  std::atomic<int> m_QueueMaxSize;
200 
207  std::atomic<int> m_iReportInterval;
208 
212  int m_iParseCounter;
213 
217  std::time_t tLastWorkReport;
218 
222  glass3::util::Queue* m_DataQueue;
223 
227  glass3::parse::GPickParser * m_GPickParser;
228 
232  glass3::parse::JSONParser * m_JSONParser;
233 
237  glass3::parse::CCParser * m_CCParser;
238 
242  glass3::parse::SimplePickParser * m_SimplePickParser;
243 };
244 } // namespace input
245 } // namespace glass3
246 #endif // INPUT_H
virtual std::string fetchRawData(std::string *pOutType)=0
get Input data string and type
glass simple pick parser class
Definition: simplepickparser.h:48
json parser class
Definition: jsonparser.h:33
int getInputDataCount() override
Input data count function.
Definition: input.cpp:220
glass3::util::WorkState work() override
Input work function.
Definition: input.cpp:229
void clear() override
Input clear function.
Definition: input.cpp:195
The neic-glass3 project namespace containing all the classes and functions that make up neic-glass3...
WorkState
glass3::util::WorkState enumeration
Definition: workstate.h:25
void setInputDataMaxSize(int size)
Function to set the maximum queue size.
Definition: input.cpp:289
neic-glass3 Input class
Definition: input.h:66
glass global pick parser class
Definition: gpickparser.h:59
The input data retrieval interface, used to provide input data to other parts of neic-glass3.
Definition: inputinterface.h:27
Input()
Input default constructor.
Definition: input.cpp:25
int getInputDataMaxSize()
Function to retrieve the maximum queue size.
Definition: input.cpp:294
glass cross correlation message parser class
Definition: ccparser.h:55
bool setup(std::shared_ptr< const json::Object > config) override
Input configuration function.
Definition: input.cpp:86
glass3::util::Queue class
Definition: queue.h:28
associatorinterface.h
~Input()
Input destructor.
Definition: input.cpp:59
std::shared_ptr< json::Object > getInputData() override
Input data getting function.
Definition: input.cpp:210
virtual std::shared_ptr< json::Object > parse(std::string inputType, std::string inputMessage)
parse line function
Definition: input.cpp:264
glass3::util::ThreadBaseClass class
Definition: threadbaseclass.h:34