]> git.sesse.net Git - cubemap/blobdiff - config.h
Identify UDPInput error messages by the stream, too.
[cubemap] / config.h
index 0600083a67b216c37eb6c92af72d853c68871856..bed0551c3e3de4709963dc0fa305b3143dfd7362 100644 (file)
--- a/config.h
+++ b/config.h
@@ -3,30 +3,43 @@
 
 // Various routines that deal with parsing the configuration file.
 
-#include <map>
-#include <vector>
+#include <stddef.h>
 #include <string>
+#include <vector>
 
-struct ConfigLine {
-       std::string keyword;
-       std::vector<std::string> arguments;
-       std::map<std::string, std::string> parameters;
+struct MarkPoolConfig {
+       int from, to;
 };
 
-// Parse the configuration file.
-std::vector<ConfigLine> parse_config(const std::string &filename);
+struct StreamConfig {
+       std::string stream_id;
+       std::string src;  // Can be empty.
+       size_t backlog_size;
+       int mark_pool;  // -1 for none.
+};
 
-enum ParameterType {
-       PARAMETER_OPTIONAL,
-       PARAMATER_MANDATORY,
+struct AcceptorConfig {
+       int port;
 };
 
-std::string fetch_config_string(const std::vector<ConfigLine> &config, const std::string &keyword,
-                                ParameterType parameter_type, const std::string &default_value = "");
+struct LogConfig {
+       enum { LOG_TYPE_FILE, LOG_TYPE_CONSOLE, LOG_TYPE_SYSLOG } type;
+       std::string filename;
+};
+
+struct Config {
+       int num_servers;
+       std::vector<MarkPoolConfig> mark_pools;
+       std::vector<StreamConfig> streams;
+       std::vector<AcceptorConfig> acceptors;
+       std::vector<LogConfig> log_destinations;
+
+       std::string stats_file;  // Empty means no stats file.
+       int stats_interval;
+};
 
-// Note: Limits are inclusive.
-int fetch_config_int(const std::vector<ConfigLine> &config, const std::string &keyword,
-                     int min_limit, int max_limit,
-                     ParameterType parameter_type, int default_value = -1);
+// Parse and validate configuration. Returns false on error.
+// <config> is taken to be empty (uninitialized) on entry.
+bool parse_config(const std::string &filename, Config *config);
 
 #endif  // !defined(_CONFIG_H)