ReCodEx - Task Broker
ReCodEx is complex programmer testing solution, primary targeted to technical universities. It's highly customizable and based on modern technologies.
broker_core.h
1 #ifndef RECODEX_BROKER_CORE_H
2 #define RECODEX_BROKER_CORE_H
3 
4 #include "spdlog/spdlog.h"
5 #include <curl/curl.h>
6 #include <functional>
7 #include <iostream>
8 #include <memory>
9 #include <thread>
10 #include <vector>
11 #include <yaml-cpp/yaml.h>
12 
13 #define BOOST_FILESYSTEM_NO_DEPRECATED
14 #define BOOST_NO_CXX11_SCOPED_ENUMS
15 #include <boost/filesystem.hpp>
16 #include <boost/program_options.hpp>
17 namespace fs = boost::filesystem;
18 
19 
20 // Our very own code includes
21 #include "broker_connect.h"
22 #include "config/broker_config.h"
23 #include "config/log_config.h"
24 #include "notifier/http_status_notifier.h"
25 #include "reactor/command_holder.h"
26 
27 
33 {
34 public:
36  broker_core() = delete;
37 
39  broker_core(const broker_core &source) = delete;
40 
42  broker_core &operator=(const broker_core &source) = delete;
43 
45  broker_core(const broker_core &&source) = delete;
46 
48  broker_core &operator=(const broker_core &&source) = delete;
49 
55  broker_core(std::vector<std::string> args);
56 
60  ~broker_core();
61 
66  void run();
67 
68 private:
72  void log_init();
73 
78  void broker_init();
79 
83  void curl_init();
84 
88  void curl_fini();
89 
94  void force_exit(std::string msg = "");
95 
99  void parse_params();
100 
105  void load_config();
106 
107  // PRIVATE DATA MEMBERS
109  std::vector<std::string> args_;
110 
112  std::string config_filename_;
113 
115  std::shared_ptr<broker_config> config_;
116 
118  std::shared_ptr<spdlog::logger> logger_;
119 
121  std::shared_ptr<worker_registry> workers_;
122 
124  std::shared_ptr<zmq::context_t> context_;
125 
127  std::shared_ptr<broker_connect> broker_;
128 };
129 
130 #endif // RECODEX_BROKER_CORE_H
broker_core()=delete
broker_core & operator=(const broker_core &source)=delete