26 std::shared_ptr<ConfigManagerInterface> ConfigFactory::singleton_instance_ =
nullptr;
27 std::mutex ConfigFactory::singleton_mutex_;
39 if (!config->load_from_file(filepath)) {
47 std::lock_guard<std::mutex> lock(singleton_mutex_);
48 if (!singleton_instance_) {
51 return singleton_instance_;
56 config->set(
"tcp.client.host", std::string(
"localhost"));
57 config->set(
"tcp.client.port", 8080);
58 config->set(
"tcp.client.retry_interval_ms", 1000);
59 config->set(
"tcp.client.max_retries", 5);
60 config->set(
"tcp.client.connection_timeout_ms", 5000);
61 config->set(
"tcp.client.keep_alive",
true);
62 config->set(
"tcp.client.buffer_size", 4096);
67 config->set(
"tcp.server.host", std::string(
"0.0.0.0"));
68 config->set(
"tcp.server.port", 8080);
69 config->set(
"tcp.server.max_connections", 100);
70 config->set(
"tcp.server.connection_timeout_ms", 30000);
71 config->set(
"tcp.server.keep_alive",
true);
72 config->set(
"tcp.server.buffer_size", 4096);
73 config->set(
"tcp.server.backlog", 128);
78 config->set(
"serial.port", std::string(
"/dev/ttyUSB0"));
79 config->set(
"serial.baud_rate", 9600);
80 config->set(
"serial.data_bits", 8);
81 config->set(
"serial.stop_bits", 1);
82 config->set(
"serial.parity", std::string(
"none"));
83 config->set(
"serial.flow_control", std::string(
"none"));
84 config->set(
"serial.timeout_ms", 1000);
85 config->set(
"serial.retry_interval_ms", 1000);
86 config->set(
"serial.max_retries", 3);
91 config->set(
"logging.level", std::string(
"info"));
92 config->set(
"logging.enable_console",
true);
93 config->set(
"logging.enable_file",
false);
94 config->set(
"logging.file_path", std::string(
"unilink.log"));
95 config->set(
"logging.max_file_size_mb", 10);
96 config->set(
"logging.max_files", 5);
97 config->set(
"logging.format", std::string(
"[%Y-%m-%d %H:%M:%S] [%l] %v"));
107 config->set(
"global.thread_pool_size", 4);
108 config->set(
"global.enable_metrics",
false);
109 config->set(
"global.metrics_port", 9090);
110 config->set(
"global.config_file", std::string(
"unilink.conf"));
static std::shared_ptr< ConfigManagerInterface > create_from_file(const std::string &filepath)
static std::shared_ptr< ConfigManagerInterface > create_with_defaults()
static std::shared_ptr< ConfigManagerInterface > get_singleton()
static std::shared_ptr< ConfigManagerInterface > create()
static void setup_serial_defaults(std::shared_ptr< ConfigManagerInterface > config)
static void setup_tcp_server_defaults(std::shared_ptr< ConfigManagerInterface > config)
static void setup_logging_defaults(std::shared_ptr< ConfigManagerInterface > config)
static void setup_all_defaults(std::shared_ptr< ConfigManagerInterface > config)
static void setup_tcp_client_defaults(std::shared_ptr< ConfigManagerInterface > config)