]> git.sesse.net Git - cubemap/blobdiff - config.h
Even more missing unistd.h includes.
[cubemap] / config.h
index 0600083a67b216c37eb6c92af72d853c68871856..d45ab08316b318c3e717d6c4a37252f047b0a9c5 100644 (file)
--- a/config.h
+++ b/config.h
@@ -3,30 +3,35 @@
 
 // Various routines that deal with parsing the configuration file.
 
-#include <map>
 #include <vector>
 #include <string>
 
-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.
+       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 Config {
+       int num_servers;
+       std::vector<MarkPoolConfig> mark_pools;
+       std::vector<StreamConfig> streams;
+       std::vector<AcceptorConfig> acceptors;
+
+       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)