acl  3.5.3.0
master_trigger.hpp
浏览该文件的文档.
1 #pragma once
2 #include "master_base.hpp"
3 
4 #ifndef ACL_CLIENT_ONLY
5 
6 struct ACL_VSTRING;
7 
8 namespace acl {
9 
10 /**
11  * acl_master 服务器框架中触发器的模板类,该类对象只能有一个实例运行
12  */
14 {
15 public:
16  /**
17  * 开始运行,调用该函数是指该服务进程是在 acl_master 服务框架
18  * 控制之下运行,一般用于生产机状态
19  * @param argc {int} 从 main 中传递的第一个参数,表示参数个数
20  * @param argv {char**} 从 main 中传递的第二个参数
21  */
22  void run_daemon(int argc, char** argv);
23 
24  /**
25  * 在单独运行时的处理函数,用户可以调用此函数进行一些必要的调试工作
26  * @param path {const char*} 配置文件全路径
27  * @param count {int} 当该值 > 0 时,则接收的连接次数达到此值且完成
28  * 后,该函数将返回,否则一直循环接收远程连接
29  * @param interval {int} 触发器时间间隔(秒)
30  */
31  void run_alone(const char* path = NULL, int count = 1, int interval = 1);
32 
33  /**
34  * 获得配置文件路径
35  * @return {const char*} 返回值为 NULL 表示没有设配置文件
36  */
37  const char* get_conf_path(void) const;
38 
39 protected:
41  virtual ~master_trigger();
42 
43  /**
44  * 当触发器时间到时调用此函数
45  */
46  virtual void on_trigger() = 0;
47 
48 private:
49  // 当触发器时间到时由 acl_master 框架回调此函数
50  static void service_main(void*);
51 
52  // 当进程切换用户身份后调用的回调函数
53  static void service_pre_jail(void*);
54 
55  // 当进程切换用户身份后调用的回调函数
56  static void service_init(void*);
57 
58  // 当进程退出时调用的回调函数
59  static void service_exit(void*);
60 
61  // 当进程收到 SIGHUP 信号后会回调本函数
62  static int service_on_sighup(void*, ACL_VSTRING*);
63 };
64 
65 } // namespace acl
66 
67 #endif // ACL_CLIENT_ONLY
#define ACL_CPP_API