File: config.h

package info (click to toggle)
cubemap 1.3.2-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 428 kB
  • sloc: cpp: 4,431; sh: 114; perl: 102; makefile: 60
file content (67 lines) | stat: -rw-r--r-- 1,833 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#ifndef _CONFIG_H
#define _CONFIG_H

// Various routines that deal with parsing the configuration file.

#include <arpa/inet.h>
#include <netinet/in.h>
#include <stddef.h>
#include <string>
#include <vector>

struct StreamConfig {
	std::string url;  // As seen by the client.
	std::string src;  // Can be empty.
	size_t backlog_size;
	size_t prebuffering_bytes;
	uint32_t pacing_rate;  // In bytes per second. Default is ~0U (no limit).
	enum Encoding { STREAM_ENCODING_RAW = 0, STREAM_ENCODING_METACUBE };
	Encoding encoding;
	Encoding src_encoding;
};

struct UDPStreamConfig {
	sockaddr_in6 dst;
	std::string src;  // Can be empty.
	uint32_t pacing_rate;  // In bytes per second. Default is ~0U (no limit).
	int ttl;  // Default is -1 (use operating system default).
	int multicast_iface_index;  // Default is -1 (use operating system default).
};

struct Gen204Config {
	std::string url;  // As seen by the client.
	std::string allow_origin;  // Can be empty.
};

struct AcceptorConfig {
	sockaddr_in6 addr;
};

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<StreamConfig> streams;
	std::vector<UDPStreamConfig> udpstreams;
	std::vector<Gen204Config> pings;
	std::vector<AcceptorConfig> acceptors;
	std::vector<LogConfig> log_destinations;

	std::string stats_file;  // Empty means no stats file.
	int stats_interval;

	std::string input_stats_file;  // Empty means no input stats file.
	int input_stats_interval;

	std::string access_log_file;  // Empty means no accses_log file.
};

// 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)