1 //
2 // libtgvoip is free and unencumbered public domain software.
3 // For more information, see http://unlicense.org or the UNLICENSE file
4 // you should have received with this source code distribution.
5 //
6 
7 #ifndef TGVOIP_VOIPSERVERCONFIG_H
8 #define TGVOIP_VOIPSERVERCONFIG_H
9 
10 #include <map>
11 #include <string>
12 #include <stdint.h>
13 #include "threading.h"
14 #include "json11.hpp"
15 
16 namespace tgvoip{
17 
18 class ServerConfig{
19 public:
20 	ServerConfig();
21 	~ServerConfig();
22 	static ServerConfig* GetSharedInstance();
23 	int32_t GetInt(std::string name, int32_t fallback);
24 	double GetDouble(std::string name, double fallback);
25 	std::string GetString(std::string name, std::string fallback);
26 	bool GetBoolean(std::string name, bool fallback);
27 	void Update(std::string jsonString);
28 
29 private:
30 	static ServerConfig* sharedInstance;
31 	bool ContainsKey(std::string key);
32     json11::Json config;
33 	Mutex mutex;
34 };
35 }
36 
37 #endif //TGVOIP_VOIPSERVERCONFIG_H
38