ifw-fcf  3.0.0
config.hpp
Go to the documentation of this file.
1 
8 #ifndef FCF_DEVMGR_COMMON_CONFIG_HPP_
9 #define FCF_DEVMGR_COMMON_CONFIG_HPP_
10 
11 // System headers
12 #include <string>
13 
14 // Third party headers
15 #include <yaml-cpp/yaml.h>
16 
17 // Local headers
18 #include <dit/fits/fits.hpp>
20 
21 #include <fcf/devmgr/common/events.rad.hpp>
22 
23 namespace fcf {
24  namespace devmgr {
25  namespace common {
26 
30  constexpr auto CONFIG_DEFAULT_PROCNAME = "devmgrServer";
33  constexpr auto CONFIG_DEFAULT_FILENAME = "";
34  constexpr auto CONFIG_DEFAULT_SCXML_FILENAME = "Supervisor.xml";
35  constexpr auto CONFIG_DEFAULT_LOGLEVEL = "ERROR";
36  constexpr auto CONFIG_DEFAULT_DB_ENDPOINT = "127.0.0.1:6379";
37  constexpr int CONFIG_DEFAULT_DB_TIMEOUT = 2;
38  constexpr auto CONFIG_DEFAULT_REQ_ENDPOINT = "tcp://*:5578";
39  constexpr auto CONFIG_DEFAULT_PUB_ENDPOINT = "tcp://*:5568";
40  constexpr auto CONFIG_DEFAULT_DICTIONARIES = "fcf/devmgr/server/primary.did";
41  constexpr auto CONFIG_DEFAULT_FIT_PREFIX = "FCS";
42 
43  constexpr unsigned int CONFIG_DEFAULT_CMD_TOUT = 60000;
44 
48  constexpr auto CONFIG_ENVVAR_DBHOST = "DB_HOST";
49 
54  class Config : public IConfig {
55  public:
63  Config();
64 
68  virtual ~Config();
69 
78  bool ParseOptions(int argc, char* argv[]);
79 
87  void LoadConfig(const std::string& filename = "");
88 
101  void LoadConfigFromString(const std::string& config);
102 
112  void CheckConfig();
113 
117  const std::string GetServerId() const;
118 
124  const std::string GetMsgReplierEndpoint() const;
125 
129  const std::string GetDbEndpoint() const;
130 
136  const std::string GetPubEndpoint() const;
137 
141  const timeval GetDbTimeout() const;
142 
146  const std::string GetSmScxmlFilename() const;
147 
151  const std::string GetConfigFilename() const;
152 
156  const std::string GetProcName() const;
157 
161  const std::string GetLogLevel() const;
162 
167  const int GetNumDevices();
168 
169  const std::string GetFitsPrefix() const;
170 
176  const std::string GetDeviceName(const int& device_index);
177 
183  const std::string GetDeviceFile(const std::string& name);
184 
190  const std::string GetDeviceType(const std::string& name);
191 
195  virtual dit::did::Did& GetDid();
196 
205  virtual void GetConfigList(std::vector<std::string>& cfg_list);
206 
211  const unsigned int GetCmdTout();
212 
217  void SetCmdTout(const unsigned int cmd_tout);
218 
223  virtual const std::string GetConfigAsString() const;
224 
225  Config(const Config&) = delete;
226  Config& operator=(const Config&) = delete;
227 
228  private:
229  YAML::Node m_config_node;
230  std::string m_server_id;
231  std::string m_proc_name;
232  std::string m_log_level;
233  std::string m_config_filename;
234  std::string m_scxml_filename;
235  std::string m_db_host_endpoint;
236  int m_db_timeout_sec;
237  std::string m_req_endpoint;
238  std::string m_pub_endpoint;
239  std::string m_fits_prefix;
240  int m_num_devices;
241  int m_num_dictionaries;
242  unsigned int m_cmd_tout;
243  dit::did::Did m_did;
244  };
245  }
246  }
247 } // namespace devmgr::common
248 
249 
250 #endif // FCF_DEVMGR_COMMON_CONFIG_HPP_
fcf::devmgr::common::CONFIG_DEFAULT_FILENAME
constexpr auto CONFIG_DEFAULT_FILENAME
Definition: config.hpp:33
fcf::devmgr::common::Config::GetServerId
const std::string GetServerId() const
Definition: config.cpp:365
fcf::devmgr::common::CONFIG_DEFAULT_SCXML_FILENAME
constexpr auto CONFIG_DEFAULT_SCXML_FILENAME
Definition: config.hpp:34
fcf::devmgr::common::Config::CheckConfig
void CheckConfig()
Verify Configuration Data.
Definition: config.cpp:200
fcf::devmgr::common::Config::GetCmdTout
const unsigned int GetCmdTout()
GetCmdTout.
Definition: config.cpp:472
fcf::devmgr::common::Config::LoadConfig
void LoadConfig(const std::string &filename="")
Definition: config.cpp:149
fcf::devmgr::common::Config::Config
Config(const Config &)=delete
fcf::devmgr::common::Config::GetConfigList
virtual void GetConfigList(std::vector< std::string > &cfg_list)
Get configuration list.
Definition: config.cpp:486
fcf::devmgr::common::CONFIG_DEFAULT_CMD_TOUT
constexpr unsigned int CONFIG_DEFAULT_CMD_TOUT
Definition: config.hpp:43
fcf::devmgr::common::CONFIG_DEFAULT_FIT_PREFIX
constexpr auto CONFIG_DEFAULT_FIT_PREFIX
Definition: config.hpp:41
fcf::devmgr::common::Config::GetFitsPrefix
const std::string GetFitsPrefix() const
Get FITS prefix.
Definition: config.cpp:389
fcf::devmgr::common::Config::GetDeviceType
const std::string GetDeviceType(const std::string &name)
GetDeviceType.
Definition: config.cpp:445
fcf::devmgr::common::CONFIG_DEFAULT_DB_TIMEOUT
constexpr int CONFIG_DEFAULT_DB_TIMEOUT
Definition: config.hpp:37
fcf::devmgr::common::Config::GetDeviceName
const std::string GetDeviceName(const int &device_index)
GetDeviceName.
Definition: config.cpp:432
fcf::devmgr::common::Config::SetCmdTout
void SetCmdTout(const unsigned int cmd_tout)
SetCmdTout.
Definition: config.cpp:527
fcf::devmgr::common::Config::GetNumDevices
const int GetNumDevices()
GetNumDevices.
Definition: config.cpp:426
fcf::devmgr::common::CONFIG_DEFAULT_LOGLEVEL
constexpr auto CONFIG_DEFAULT_LOGLEVEL
Definition: config.hpp:35
fcf::devmgr::common::Config::ParseOptions
bool ParseOptions(int argc, char *argv[])
Definition: config.cpp:71
fcf::devmgr::common::Config::GetDid
virtual dit::did::Did & GetDid()
Definition: config.cpp:479
fcf::devmgr::common::Config::GetDbEndpoint
const std::string GetDbEndpoint() const
Definition: config.cpp:377
fcf::devmgr::common::Config::GetPubEndpoint
const std::string GetPubEndpoint() const
Definition: config.cpp:383
fcf::devmgr::common::CONFIG_DEFAULT_DB_ENDPOINT
constexpr auto CONFIG_DEFAULT_DB_ENDPOINT
Definition: config.hpp:36
fcf::devmgr::common::CONFIG_DEFAULT_PROCNAME
constexpr auto CONFIG_DEFAULT_PROCNAME
Definition: config.hpp:30
fcf::devmgr::common::Config::GetConfigAsString
virtual const std::string GetConfigAsString() const
Get the actual configuration as a string.
Definition: config.cpp:532
fcf::devmgr::common::Config::GetDeviceFile
const std::string GetDeviceFile(const std::string &name)
GetDeviceFile.
Definition: config.cpp:457
fcf::devmgr::common::Config::operator=
Config & operator=(const Config &)=delete
Disable copy constructor.
fcf
Definition: actionMgr.cpp:29
fcf::devmgr::common::CONFIG_DEFAULT_DICTIONARIES
constexpr auto CONFIG_DEFAULT_DICTIONARIES
Definition: config.hpp:40
fcf::devmgr::common::Config::GetLogLevel
const std::string GetLogLevel() const
Definition: config.cpp:420
fcf::devmgr::common::Config::GetSmScxmlFilename
const std::string GetSmScxmlFilename() const
Definition: config.cpp:402
fcf::devmgr::common::CONFIG_ENVVAR_DBHOST
constexpr auto CONFIG_ENVVAR_DBHOST
Definition: config.hpp:48
fcf::devmgr::common::Config::GetConfigFilename
const std::string GetConfigFilename() const
Definition: config.cpp:408
fcf::devmgr::common::Config
Definition: config.hpp:54
fcf::devmgr::common::Config::LoadConfigFromString
void LoadConfigFromString(const std::string &config)
Init the internal configuration from a given file.
Definition: config.cpp:184
fcf::devmgr::common::CONFIG_DEFAULT_REQ_ENDPOINT
constexpr auto CONFIG_DEFAULT_REQ_ENDPOINT
Definition: config.hpp:38
fcf::devmgr::common::Config::GetMsgReplierEndpoint
const std::string GetMsgReplierEndpoint() const
Definition: config.cpp:370
iConfig.hpp
IConfig class header file.
fcf::devmgr::common::IConfig
Definition: iConfig.hpp:22
fcf::devmgr::common::Config::GetProcName
const std::string GetProcName() const
Definition: config.cpp:414
fcf::devmgr::common::Config::Config
Config()
Definition: config.cpp:34
fcf::devmgr::common::Config::~Config
virtual ~Config()
Definition: config.cpp:67
fcf::devmgr::common::CONFIG_DEFAULT_PUB_ENDPOINT
constexpr auto CONFIG_DEFAULT_PUB_ENDPOINT
Definition: config.hpp:39
fcf::devmgr::common::Config::GetDbTimeout
const timeval GetDbTimeout() const
Definition: config.cpp:395