acl  3.5.3.0
acl::connect_monitor类 参考

#include <connect_monitor.hpp>

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

Public 成员函数

 connect_monitor (connect_manager &manager)
 
virtual ~connect_monitor ()
 
connect_monitoropen_rpc_service (int max_threads, const char *addr=NULL)
 
connect_monitorset_check_inter (int n)
 
connect_monitorset_conn_timeout (int n)
 
void stop (bool graceful)
 
connect_managerget_manager () const
 
virtual void nio_check (check_client &checker, aio_socket_stream &conn)
 
virtual void sio_check (check_client &checker, socket_stream &conn)
 
virtual void on_connected (const check_client &, double cost)
 
virtual void on_timeout (const char *addr, double cost)
 
virtual void on_refused (const char *addr, double cost)
 
void on_open (check_client &checker)
 
- Public 成员函数 继承自 acl::acl::thread
 thread (void)
 
virtual ~thread (void)
 
bool start (bool sync=false)
 
bool wait (void **out=NULL)
 
threadset_detachable (bool yes)
 
threadset_stacksize (size_t size)
 
unsigned long thread_id (void) const
 
- Public 成员函数 继承自 acl::acl::thread_job
 thread_job (void)
 
virtual ~thread_job (void)
 
virtual void init (void)
 

Protected 成员函数

virtual void * run ()
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

额外继承的成员函数

- 静态 Public 成员函数 继承自 acl::acl::thread
static unsigned long thread_self (void)
 
static unsigned long self (void)
 

详细描述

在文件 connect_monitor.hpp17 行定义.

构造及析构函数说明

◆ connect_monitor()

acl::connect_monitor::connect_monitor ( connect_manager manager)

构造函数

参数
manager{connect_manager&}

◆ ~connect_monitor()

virtual acl::connect_monitor::~connect_monitor ( )
virtual

成员函数说明

◆ get_manager()

connect_manager& acl::connect_monitor::get_manager ( ) const
inline

获得 connect_manager 引用对象

返回
{connect_manager&}

在文件 connect_monitor.hpp68 行定义.

69  {
70  return manager_;
71  }

◆ nio_check()

virtual void acl::connect_monitor::nio_check ( check_client checker,
aio_socket_stream conn 
)
virtual

虚函数,子类可以重载本函数用来进一步判断该连接是否是存活的,该回调 函数的运行空间为当前非阻塞检测线程的运行空间,因此在该回调函数中不 得有阻塞过程,否则将会阻塞整个非阻塞检测线程

参数
checker{check_client&} 服务端连接的检查对象,可以通过 check_client 类中的方法如下: 1) get_conn 获得非阻塞连接句柄 2) get_addr 获得服务端地址 3) set_alive 设置连接是否存活 4) close 关闭连接

◆ on_connected()

virtual void acl::connect_monitor::on_connected ( const check_client ,
double  cost 
)
inlinevirtual

当连接成功时的回调方法,子类可以实现本方法

参数
cost{double} 从发起连接请求到超时的时间间隔(秒)

在文件 connect_monitor.hpp104 行定义.

105  {
106  (void) cost;
107  }

◆ on_open()

void acl::connect_monitor::on_open ( check_client checker)

当与服务端建立连接后调用此函数

参数
checker{check_client&}

◆ on_refused()

virtual void acl::connect_monitor::on_refused ( const char *  addr,
double  cost 
)
inlinevirtual

当连接服务器时被拒绝时的回调方法,子类可实现本方法

参数
addr{const char*} 被检测的服务器地址,格式: ip:port
cost{double} 从发起连接请求到被断开的时间间隔(秒)

在文件 connect_monitor.hpp125 行定义.

126  {
127  (void) addr;
128  (void) cost;
129  }

◆ on_timeout()

virtual void acl::connect_monitor::on_timeout ( const char *  addr,
double  cost 
)
inlinevirtual

当连接超时时的回调方法,子类可以实现本方法

参数
addr{const char*} 被检测的服务器地址,格式: ip:port
cost{double} 从发起连接请求到超时的时间间隔(秒)

在文件 connect_monitor.hpp114 行定义.

115  {
116  (void) addr;
117  (void) cost;
118  }

◆ open_rpc_service()

connect_monitor& acl::connect_monitor::open_rpc_service ( int  max_threads,
const char *  addr = NULL 
)

当希望采用阻塞式检测服务端连接时,需要先调用本函数打开 acl::rpc_service 阻塞接口处理服务;如果在初始化时不调用本函数, 则采用非阻塞方式进行 IO 检测

参数
max_threads{int} rpc_service 服务线程池中运行的最大线程数
addr{const char*} 希望 rpc_service 服务监听的本机地址,可以 为本机的回地址或在 UNIX 平台下使用域套接口地址
返回
{connect_monitor&}

◆ run()

virtual void* acl::connect_monitor::run ( )
protectedvirtual

◆ set_check_inter()

connect_monitor& acl::connect_monitor::set_check_inter ( int  n)

设置检测定时器启动的时间间隔

参数
n{int} 时间间隔(秒)
返回
{connect_mointor&}

◆ set_conn_timeout()

connect_monitor& acl::connect_monitor::set_conn_timeout ( int  n)

设置连接被检测服务器的超时时间

参数
n{int} 超时时间(秒)
返回
{connect_monitor&}

◆ sio_check()

virtual void acl::connect_monitor::sio_check ( check_client checker,
socket_stream conn 
)
virtual

同步 IO 检测虚函数,该函数在线程池的某个子线程空间中运行,子类可以 重载本函数以检测实际应用的网络连接存活状态,可以在本函数内有阻塞 IO 过程

参数
checker{check_client&} 服务端连接的检查对象 check_client 类中允许调用的方法如下: 1) get_addr 获得服务端地址 2) set_alive 设置连接是否存活 check_client 类中禁止调用的方法如下: 1) get_conn 获得非阻塞连接句柄 2) close 关闭连接

◆ stop()

void acl::connect_monitor::stop ( bool  graceful)

停止检测线程

参数
graceful{bool} 是否文明地关闭检测过程,如果为 true 则会等所有的检测连接关闭后检测线程才返回;否则,则直接检测线程 直接返回,可能会造成一些正在检测的连接未被释放。正因如此,如果 连接池集群管理对象是进程内全局的,可以将此参数设为 false,如果 连接池集群管理对象在运行过程中需要被多次创建与释放,则应该设为 true

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