acl  3.5.3.0
acl::master_threads类 参考abstract

#include <master_threads.hpp>

+ 类 acl::master_threads 继承关系图:
+ acl::master_threads 的协作图:

Public 成员函数

void run_daemon (int argc, char **argv)
 
bool run_alone (const char *addrs, const char *path=NULL, unsigned int count=1, int threads_count=1)
 
void thread_enable_read (socket_stream *stream)
 
void thread_disable_read (socket_stream *stream)
 
const char * get_conf_path (void) const
 
size_t task_qlen (void) const
 
acl_pthread_pool_tthreads_pool (void) const
 
- Public 成员函数 继承自 acl::master_base
master_baseset_cfg_bool (master_bool_tbl *table)
 
master_baseset_cfg_int (master_int_tbl *table)
 
master_baseset_cfg_int64 (master_int64_tbl *table)
 
master_baseset_cfg_str (master_str_tbl *table)
 
bool daemon_mode (void) const
 
bool proc_set_timer (event_timer *timer)
 
void proc_del_timer (event_timer *timer)
 

Protected 成员函数

 master_threads ()
 
virtual ~master_threads ()
 
virtual bool thread_on_read (socket_stream *stream)=0
 
virtual bool keep_read (socket_stream *stream)
 
virtual bool thread_on_accept (socket_stream *stream)
 
virtual bool thread_on_handshake (socket_stream *stream)
 
virtual bool thread_on_timeout (socket_stream *stream)
 
virtual void thread_on_close (socket_stream *stream)
 
virtual void thread_on_init ()
 
virtual void thread_on_exit ()
 
virtual bool proc_exit_timer (size_t nclients, size_t nthreads)
 
- Protected 成员函数 继承自 acl::master_base
 master_base ()
 
virtual ~master_base ()
 
virtual void proc_on_listen (server_socket &ss)
 
virtual void proc_pre_jail ()
 
virtual void proc_on_init ()
 
virtual void proc_on_exit ()
 
virtual bool proc_on_sighup (string &)
 
void set_event (ACL_EVENT *event)
 
ACL_EVENTget_event (void) const
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

额外继承的成员函数

- Protected 属性 继承自 acl::master_base
bool daemon_mode_
 
bool proc_inited_
 
std::vector< server_socket * > servers_
 
master_conf conf_
 

详细描述

线程池服务器框架类,该类为纯虚类,子类需要实现其中的纯虚函数, 每一个进程仅能有一个该类对象实例,否则程序会被终止

在文件 master_threads.hpp20 行定义.

构造及析构函数说明

◆ 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 后,会自动调用本函数 以判断是否监控流对象是否可读

参数
stream{socket_stream*}
返回
{bool} 如果返回 false,则框架不再监控该流对象

在文件 master_threads.hpp99 行定义.

100  {
101  (void) stream;
102  return true;
103  }

◆ 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.hpp173 行定义.

174  {
175  (void) nclients;
176  (void) nthreads;
177  return true;
178  }

◆ 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)

不再监听给定流的可读状态

参数
stream{socket_stream*}

◆ thread_enable_read()

void acl::master_threads::thread_enable_read ( socket_stream stream)

监听给定流的可读状态

参数
stream{socket_stream*}

◆ thread_on_accept()

virtual bool acl::master_threads::thread_on_accept ( socket_stream stream)
inlineprotectedvirtual

当线程池中的某个线程获得一个连接时的回调函数,子类可以做一些 初始化工作,该函数是在主线程的线程空间中运行

参数
stream{socket_stream*}
返回
{bool} 如果返回 false 则表示子类要求关闭连接,而不 必将该连接再传递至 thread_main 过程

在文件 master_threads.hpp112 行定义.

113  {
114  (void) stream;
115  return true;
116  }

◆ thread_on_close()

virtual void acl::master_threads::thread_on_close ( socket_stream stream)
inlineprotectedvirtual

当与某个线程绑定的连接关闭时的回调函数

参数
stream{socket_stream*} 注:当在 thread_on_accept 返回 false 后流关闭时该函数并不会 被调用

在文件 master_threads.hpp149 行定义.

149 { (void) stream; }

◆ thread_on_exit()

virtual void acl::master_threads::thread_on_exit ( )
inlineprotectedvirtual

当线程池中一个线程退出时的回调函数

在文件 master_threads.hpp159 行定义.

159 {}

◆ thread_on_handshake()

virtual bool acl::master_threads::thread_on_handshake ( socket_stream stream)
inlineprotectedvirtual

当接收到一个客户端连接后,服务端回调此函数与客户端进行握手的操作, 该函数将在 thread_on_accept 之后被调用

返回
{bool} 如果返回 false 则表示子类要求关闭连接,而不 必将该连接再传递至 thread_main 过程

在文件 master_threads.hpp124 行定义.

125  {
126  (void) stream;
127  return true;
128  }

◆ thread_on_init()

virtual void acl::master_threads::thread_on_init ( )
inlineprotectedvirtual

当线程池中一个新线程被创建时的回调函数

在文件 master_threads.hpp154 行定义.

154 {}

◆ thread_on_read()

virtual bool acl::master_threads::thread_on_read ( socket_stream stream)
protectedpure virtual

纯虚函数:当某个客户端连接有数据可读或关闭或出错时调用此函数

参数
stream{socket_stream*}
返回
{bool} 返回 false 则表示当函数返回后需要关闭连接, 否则表示需要保持长连接,如果该流出错,则应用应该返回 false

◆ thread_on_timeout()

virtual bool acl::master_threads::thread_on_timeout ( socket_stream stream)
inlineprotectedvirtual

当某个网络连接的 IO 读写超时时的回调函数,如果该函数返回 true 则 表示继续等待下一次读写,否则则希望关闭该连接

参数
stream{socket_stream*}
返回
{bool} 如果返回 false 则表示子类要求关闭连接,否则则要求 继续监听该连接

在文件 master_threads.hpp137 行定义.

138  {
139  (void) stream;
140  return false;
141  }

◆ threads_pool()

acl_pthread_pool_t* acl::master_threads::threads_pool ( void  ) const

获得 lib_acl C 库中的线程池句柄

返回
{acl_pthread_pool_t*}

该类的文档由以下文件生成: