acl
3.5.3.0
master_proc.hpp
浏览该文件的文档.
1
#pragma once
2
#include "
master_base.hpp
"
3
4
#ifndef ACL_CLIENT_ONLY
5
6
struct
ACL_VSTREAM
;
7
struct
ACL_EVENT
;
8
struct
ACL_VSTRING
;
9
10
namespace
acl
{
11
12
class
socket_stream;
13
14
/**
15
* acl_master 服务器框架中进程方式的模板类,该类对象只能有一个实例运行
16
*/
17
class
ACL_CPP_API
master_proc
:
public
master_base
18
{
19
public
:
20
/**
21
* 开始运行,调用该函数是指该服务进程是在 acl_master 服务框架
22
* 控制之下运行,一般用于生产机状态
23
* @param argc {int} 从 main 中传递的第一个参数,表示参数个数
24
* @param argv {char**} 从 main 中传递的第二个参数
25
*/
26
void
run_daemon(
int
argc,
char
** argv);
27
28
/**
29
* 在单独运行时的处理函数,用户可以调用此函数进行一些必要的调试工作
30
* @param addrs {const char*} 服务监听地址列表,格式:IP:PORT, IP:PORT...
31
* @param path {const char*} 配置文件全路径
32
* @param count {int} 当该值 > 0 时,则接收的连接次数达到此值且完成
33
* 后,该函数将返回,否则一直循环接收远程连接
34
* @return {bool} 监听是否成功
35
*/
36
bool
run_alone(
const
char
* addrs,
const
char
* path = NULL,
int
count = 1);
37
38
/**
39
* 获得配置文件路径
40
* @return {const char*} 返回值为 NULL 表示没有设配置文件
41
*/
42
const
char
* get_conf_path(
void
)
const
;
43
44
protected
:
45
master_proc
();
46
virtual
~
master_proc
();
47
48
/**
49
* 纯虚函数:当接收到一个客户端连接时调用此函数
50
* @param stream {aio_socket_stream*} 新接收到的客户端异步流对象
51
* 注:该函数返回后,流连接将会被关闭,用户不应主动关闭该流
52
*/
53
virtual
void
on_accept(
socket_stream
*
stream
) = 0;
54
55
private
:
56
// 当接收到一个客户端连接时回调此函数
57
static
void
service_main(
void
*,
ACL_VSTREAM
*
stream
);
58
59
// 当监听一个服务地址时回调此函数
60
static
void
service_on_listen(
void
*,
ACL_VSTREAM
*);
61
62
// 当进程切换用户身份后调用的回调函数
63
static
void
service_pre_jail(
void
*);
64
65
// 当进程切换用户身份后调用的回调函数
66
static
void
service_init(
void
*);
67
68
// 当进程退出时调用的回调函数
69
static
void
service_exit(
void
*);
70
71
// 当进程收到 SIGHUP 信号后会回调本函数
72
static
int
service_on_sighup(
void
*,
ACL_VSTRING
*);
73
74
private
:
75
// 在单独运行方式下,该函数当监听套接字有新连接到达时被调用
76
static
void
listen_callback(
int
event_type,
ACL_EVENT
*,
77
ACL_VSTREAM
*,
void
* context);
78
79
private
:
80
bool
stop_;
81
int
count_limit_;
82
int
count_;
83
};
84
85
}
// namespace acl
86
87
#endif // ACL_CLIENT_ONLY
master_base.hpp
acl
Definition:
acl_cpp_init.hpp:4
ACL_VSTRING
Definition:
acl_vstring.h:17
acl::socket_stream
Definition:
socket_stream.hpp:14
acl::master_proc
Definition:
master_proc.hpp:17
ACL_EVENT
struct ACL_EVENT ACL_EVENT
Definition:
acl_events.h:43
acl::master_base
Definition:
master_base.hpp:18
acl::stream
Definition:
stream.hpp:24
ACL_VSTREAM
Definition:
acl_vstream.h:66
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
include
acl_cpp
master
master_proc.hpp
生成于 2021年 九月 10日 星期五 11:14:44 , 为 acl使用
1.8.15