acl  3.5.3.0
master_conf.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/noncopyable.hpp"
4 
5 #ifndef ACL_CLIENT_ONLY
6 
8 struct ACL_CFG_INT_TABLE;
10 struct ACL_CFG_STR_TABLE;
11 struct ACL_CFG_BOOL_TABLE;
12 
13 namespace acl {
14 
15 typedef struct master_int_tbl
16 {
17  const char *name;
18  int defval;
19  int *target;
20  int min;
21  int max;
23 
24 typedef struct master_str_tbl
25 {
26  const char *name;
27  const char *defval;
28  char **target;
30 
31 typedef struct master_bool_tbl
32 {
33  const char *name;
34  int defval;
35  int *target;
37 
38 typedef struct master_int64_tbl
39 {
40  const char *name;
41 #if defined(_WIN32) || defined(_WIN64)
42  __int64 defval;
43  __int64 *target;
44  __int64 min;
45  __int64 max;
46 #else
47  long long int defval;
48  long long int *target;
49  long long int min;
50  long long int max;
51 #endif
53 
54 class master_base;
55 
57 {
58 public:
59  master_conf();
60  ~master_conf();
61 
62  /**
63  * 设置 bool 类型的配置项
64  * @param table {master_bool_tbl*}
65  */
66  void set_cfg_bool(master_bool_tbl* table);
67 
68  /**
69  * 设置 int 类型的配置项
70  * @param table {master_int_tbl*}
71  */
72  void set_cfg_int(master_int_tbl* table);
73 
74  /**
75  * 设置 int64 类型的配置项
76  * @param table {master_int64_tbl*}
77  */
78  void set_cfg_int64(master_int64_tbl* table);
79 
80  /**
81  * 设置 字符串 类型的配置项
82  * @param table {master_str_tbl*}
83  */
84  void set_cfg_str(master_str_tbl* table);
85 
86  /**
87  * 加载配置文件
88  * @param path {const char*} 配置文件全路径
89  */
90  void load(const char* path);
91 
92  /**
93  * 获得由 load 设置的配置文件路径
94  * @return {const char*} 返回 NULL 表示没有设置配置文件路径
95  */
96  const char* get_path(void) const;
97 
98  /**
99  * 重置配置解析器状态,释放之前分配的资源,调用此函数后,
100  * 之前获得的字符串配置项的内存将会被释放,所以禁止再用;
101  * 调用该函数后,则该配置解析器对象可以再次使用解析其它
102  * 配置文件
103  */
104  void reset(void);
105 
106  ACL_CFG_INT_TABLE* get_int_cfg() const;
107  ACL_CFG_INT64_TABLE* get_int64_cfg() const;
108  ACL_CFG_STR_TABLE* get_str_cfg() const;
109  ACL_CFG_BOOL_TABLE* get_bool_cfg() const;
110 
111 private:
112  char* path_;
113  bool cfg_loaded_;
114 
115  ACL_XINETD_CFG_PARSER* cfg_;
116  ACL_CFG_INT_TABLE* int_cfg_;
117  ACL_CFG_INT64_TABLE* int64_cfg_;
118  ACL_CFG_STR_TABLE* str_cfg_;
119  ACL_CFG_BOOL_TABLE* bool_cfg_;
120 
121  master_int_tbl* int_tbl_;
122  master_str_tbl* str_tbl_;
123  master_bool_tbl* bool_tbl_;
124  master_int64_tbl* int64_tbl_;
125 
126  void load_str(void);
127  void load_bool(void);
128  void load_int(void);
129  void load_int64(void);
130 };
131 
132 } // namespace acl
133 
134 #endif // ACL_CLIENT_ONLY
struct acl::master_str_tbl master_str_tbl
long long int * target
Definition: master_conf.hpp:48
const char * defval
Definition: master_conf.hpp:27
struct acl::master_bool_tbl master_bool_tbl
long long int defval
Definition: master_conf.hpp:47
struct ACL_XINETD_CFG_PARSER ACL_XINETD_CFG_PARSER
struct acl::master_int_tbl master_int_tbl
struct acl::master_int64_tbl master_int64_tbl
const char * name
Definition: master_conf.hpp:17
#define ACL_CPP_API
const char * name
Definition: master_conf.hpp:26