#include <master_threads.hpp>
线程池服务器框架类,该类为纯虚类,子类需要实现其中的纯虚函数, 每一个进程仅能有一个该类对象实例,否则程序会被终止
在文件 master_threads.hpp 第 20 行定义.
◆ master_threads()
acl::master_threads::master_threads |
( |
| ) |
|
|
protected |
◆ ~master_threads()
virtual acl::master_threads::~master_threads |
( |
| ) |
|
|
protectedvirtual |
◆ get_conf_path()
const char* acl::master_threads::get_conf_path |
( |
void |
| ) |
const |
获得配置文件路径
- 返回
- {const char*} 返回值为 NULL 表示没有设配置文件
◆ keep_read()
virtual bool acl::master_threads::keep_read |
( |
socket_stream * |
stream | ) |
|
|
inlineprotectedvirtual |
框架在调用 thread_on_read 后且其返回 true 后,会自动调用本函数 以判断是否监控流对象是否可读
- 参数
-
- 返回
- {bool} 如果返回 false,则框架不再监控该流对象
在文件 master_threads.hpp 第 99 行定义.
◆ proc_exit_timer()
virtual bool acl::master_threads::proc_exit_timer |
( |
size_t |
nclients, |
|
|
size_t |
nthreads |
|
) |
| |
|
inlineprotectedvirtual |
当子进程需要退出时框架将回调此函数,框架决定子进程是否退出取决于: 1) 如果此函数返回 true 则子进程立即退出,否则: 2) 如果该子进程所有客户端连接都已关闭,则子进程立即退出,否则: 3) 查看配置文件中的配置项(ioctl_quick_abort),如果该配置项非 0 则 子进程立即退出,否则: 4) 等所有客户端连接关闭后才退出
- 参数
-
nclients | {size_t} 当前连接的客户端个数 |
nthreads | {size_t} 当前线程池中繁忙的工作线程个数 |
- 返回
- {bool} 返回 false 表示当前子进程还不能退出,否则表示当前 子进程可以退出了
在文件 master_threads.hpp 第 173 行定义.
◆ run_alone()
bool acl::master_threads::run_alone |
( |
const char * |
addrs, |
|
|
const char * |
path = NULL , |
|
|
unsigned int |
count = 1 , |
|
|
int |
threads_count = 1 |
|
) |
| |
在单独运行时的处理函数,用户可以调用此函数进行一些必要的调试工作
- 参数
-
addrs | {const char*} 监听地址列表,格式:IP:PORT, IP:PORT... |
path | {const char*} 配置文件全路径 |
count | {unsigned int} 循环服务的次数,达到此值后函数自动返回; 若该值为 0 则表示程序一直循环处理外来请求而不返回 |
threads_count | {int} 当该值大于 1 时表示自动采用线程池方式, 该值只有当 count != 1 时才有效,即若 count == 1 则仅运行一次就返回 且不会启动线程处理客户端请求 |
- 返回
- {bool} 监听是否成功 注:count, threads_count 两个参数不再有效,将会使用配置文件中的 配置值 ioctl_use_limit(控制处理连接的个数) 及 ioctl_max_threads( 控制启动的最大线程数)
◆ run_daemon()
void acl::master_threads::run_daemon |
( |
int |
argc, |
|
|
char ** |
argv |
|
) |
| |
开始运行,调用该函数是指该服务进程是在 acl_master 服务框架 控制之下运行,一般用于生产机状态
- 参数
-
argc | {int} 从 main 中传递的第一个参数,表示参数个数 |
argv | {char**} 从 main 中传递的第二个参数 |
◆ task_qlen()
size_t acl::master_threads::task_qlen |
( |
void |
| ) |
const |
获得当前线程池队列中积压的待处理任务数,该 API 可以方便应用决定何时 需要进行过载保护,在压力大的时候将后续的任务丢弃
- 返回
- {size_t}
◆ thread_disable_read()
void acl::master_threads::thread_disable_read |
( |
socket_stream * |
stream | ) |
|
◆ thread_enable_read()
void acl::master_threads::thread_enable_read |
( |
socket_stream * |
stream | ) |
|
◆ thread_on_accept()
virtual bool acl::master_threads::thread_on_accept |
( |
socket_stream * |
stream | ) |
|
|
inlineprotectedvirtual |
当线程池中的某个线程获得一个连接时的回调函数,子类可以做一些 初始化工作,该函数是在主线程的线程空间中运行
- 参数
-
- 返回
- {bool} 如果返回 false 则表示子类要求关闭连接,而不 必将该连接再传递至 thread_main 过程
在文件 master_threads.hpp 第 112 行定义.
◆ thread_on_close()
virtual void acl::master_threads::thread_on_close |
( |
socket_stream * |
stream | ) |
|
|
inlineprotectedvirtual |
当与某个线程绑定的连接关闭时的回调函数
- 参数
-
stream | {socket_stream*} 注:当在 thread_on_accept 返回 false 后流关闭时该函数并不会 被调用 |
在文件 master_threads.hpp 第 149 行定义.
◆ thread_on_exit()
virtual void acl::master_threads::thread_on_exit |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ thread_on_handshake()
virtual bool acl::master_threads::thread_on_handshake |
( |
socket_stream * |
stream | ) |
|
|
inlineprotectedvirtual |
当接收到一个客户端连接后,服务端回调此函数与客户端进行握手的操作, 该函数将在 thread_on_accept 之后被调用
- 返回
- {bool} 如果返回 false 则表示子类要求关闭连接,而不 必将该连接再传递至 thread_main 过程
在文件 master_threads.hpp 第 124 行定义.
◆ thread_on_init()
virtual void acl::master_threads::thread_on_init |
( |
| ) |
|
|
inlineprotectedvirtual |
◆ thread_on_read()
virtual bool acl::master_threads::thread_on_read |
( |
socket_stream * |
stream | ) |
|
|
protectedpure virtual |
纯虚函数:当某个客户端连接有数据可读或关闭或出错时调用此函数
- 参数
-
- 返回
- {bool} 返回 false 则表示当函数返回后需要关闭连接, 否则表示需要保持长连接,如果该流出错,则应用应该返回 false
◆ thread_on_timeout()
virtual bool acl::master_threads::thread_on_timeout |
( |
socket_stream * |
stream | ) |
|
|
inlineprotectedvirtual |
当某个网络连接的 IO 读写超时时的回调函数,如果该函数返回 true 则 表示继续等待下一次读写,否则则希望关闭该连接
- 参数
-
- 返回
- {bool} 如果返回 false 则表示子类要求关闭连接,否则则要求 继续监听该连接
在文件 master_threads.hpp 第 137 行定义.
◆ threads_pool()
获得 lib_acl C 库中的线程池句柄
- 返回
- {acl_pthread_pool_t*}
该类的文档由以下文件生成: