]> git.sesse.net Git - cubemap/blobdiff - config.h
Add support for UDP outputs.
[cubemap] / config.h
index d45ab08316b318c3e717d6c4a37252f047b0a9c5..8de6704ddd4e5e9c5292bca64b85740fa31faeeb 100644 (file)
--- a/config.h
+++ b/config.h
@@ -3,15 +3,25 @@
 
 // Various routines that deal with parsing the configuration file.
 
-#include <vector>
+#include <arpa/inet.h>
+#include <stddef.h>
 #include <string>
+#include <vector>
 
 struct MarkPoolConfig {
        int from, to;
 };
 
 struct StreamConfig {
-       std::string stream_id;
+       std::string url;  // As seen by the client.
+       std::string src;  // Can be empty.
+       size_t backlog_size;
+       int mark_pool;  // -1 for none.
+       enum { STREAM_ENCODING_RAW = 0, STREAM_ENCODING_METACUBE } encoding;
+};
+
+struct UDPStreamConfig {
+       sockaddr_in6 dst;
        std::string src;  // Can be empty.
        int mark_pool;  // -1 for none.
 };
@@ -20,14 +30,24 @@ struct AcceptorConfig {
        int port;
 };
 
+struct LogConfig {
+       enum { LOG_TYPE_FILE, LOG_TYPE_CONSOLE, LOG_TYPE_SYSLOG } type;
+       std::string filename;
+};
+
 struct Config {
+       bool daemonize;
        int num_servers;
        std::vector<MarkPoolConfig> mark_pools;
        std::vector<StreamConfig> streams;
+       std::vector<UDPStreamConfig> udpstreams;
        std::vector<AcceptorConfig> acceptors;
+       std::vector<LogConfig> log_destinations;
 
        std::string stats_file;  // Empty means no stats file.
        int stats_interval;
+
+       std::string access_log_file;  // Empty means no accses_log file.
 };
 
 // Parse and validate configuration. Returns false on error.