acl  3.5.3.0
master_base.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/noncopyable.hpp"
4 #include "master_conf.hpp"
5 #include <vector>
6 
7 #ifndef ACL_CLIENT_ONLY
8 
9 struct ACL_EVENT;
10 
11 namespace acl
12 {
13 
14 class server_socket;
15 class event_timer;
16 class string;
17 
19 {
20 public:
21  /**
22  * 设置 bool 类型的配置项
23  * @param table {master_bool_tbl*}
24  * @return {master_base&}
25  */
26  master_base& set_cfg_bool(master_bool_tbl* table);
27 
28  /**
29  * 设置 int 类型的配置项
30  * @param table {master_int_tbl*}
31  * @return {master_base&}
32  */
33  master_base& set_cfg_int(master_int_tbl* table);
34 
35  /**
36  * 设置 int64 类型的配置项
37  * @param table {master_int64_tbl*}
38  * @return {master_base&}
39  */
40  master_base& set_cfg_int64(master_int64_tbl* table);
41 
42  /**
43  * 设置 字符串 类型的配置项
44  * @param table {master_str_tbl*}
45  * @return {master_base&}
46  */
47  master_base& set_cfg_str(master_str_tbl* table);
48 
49  /**
50  * 判断是否是由 acl_master 控制的 daemon 模式
51  * @return {bool}
52  */
53  bool daemon_mode(void) const;
54 
55  /////////////////////////////////////////////////////////////////////
56 
57  /**
58  * 设置进程级别的定时器,该函数只可在主线程的运行空间 (如在函数
59  * proc_on_init) 中被设置,当该定时器任务都执行完毕后会自动被
60  * 销毁(即内部会自动调用 master_timer::destroy 方法)
61  * @param timer {event_timer*} 定时任务
62  * @return {bool} 设置定时器是否成功
63  */
64  bool proc_set_timer(event_timer* timer);
65 
66  /**
67  * 删除进程级别定时器
68  * @param timer {event_timer*} 由 proc_set_timer 设置的定时任务
69  */
70  void proc_del_timer(event_timer* timer);
71 
72 protected:
75  std::vector<server_socket*> servers_;
76 
77  master_base();
78  virtual ~master_base();
79 
80  /**
81  * 在进程启动时,服务进程每成功监听一个本地地址,便调用本函数
82  * @param ss {const server_socket&} 监听对象
83  */
84  virtual void proc_on_listen(server_socket& ss) { (void) ss; }
85 
86  /**
87  * 当进程切换用户身份前调用的回调函数,可以在此函数中做一些
88  * 用户身份为 root 的权限操作
89  */
90  virtual void proc_pre_jail() {}
91 
92  /**
93  * 当进程切换用户身份后调用的回调函数,此函数被调用时,进程
94  * 的权限为普通受限级别
95  */
96  virtual void proc_on_init() {}
97 
98  /**
99  * 当进程退出前调用的回调函数
100  */
101  virtual void proc_on_exit() {}
102 
103  /**
104  * 当收到 SIGHUP 信号时的回调虚方法
105  */
106  virtual bool proc_on_sighup(string&) { return true; }
107 
108  // 配置对象
110 
111 protected:
112  // 子类必须调用本方法设置事件引擎句柄
113  void set_event(ACL_EVENT* event);
114 
115  /**
116  * 获得事件引擎够本
117  * @return {ACL_EVENT*}
118  */
119  ACL_EVENT* get_event(void) const
120  {
121  return event_;
122  }
123 
124 private:
125  ACL_EVENT* event_;
126 };
127 
128 } // namespace acl
129 
130 #endif // ACL_CLIENT_ONLY
131 
virtual bool proc_on_sighup(string &)
std::vector< server_socket * > servers_
Definition: master_base.hpp:75
master_conf conf_
virtual void proc_on_exit()
struct ACL_EVENT ACL_EVENT
Definition: acl_events.h:43
ACL_EVENT * get_event(void) const
virtual void proc_pre_jail()
Definition: master_base.hpp:90
#define ACL_CPP_API
virtual void proc_on_init()
Definition: master_base.hpp:96
virtual void proc_on_listen(server_socket &ss)
Definition: master_base.hpp:84