acl  3.5.3.0
acl::tcp_ipc类 参考

#include <tcp_ipc.hpp>

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

Public 成员函数

 tcp_ipc (void)
 
 ~tcp_ipc (void)
 
tcp_ipcset_limit (int max)
 
tcp_ipcset_idle (int ttl)
 
tcp_ipcset_conn_timeout (int conn_timeout)
 
tcp_ipcset_rw_timeout (int timeout)
 
tcp_managerget_manager (void) const
 
tcp_ipcadd_addr (const char *addr)
 
tcp_ipcdel_addr (const char *addr)
 
bool addr_exist (const char *addr)
 
void get_addrs (std::vector< string > &addrs)
 
bool send (const char *addr, const void *data, unsigned int len, string *out=NULL)
 
size_t broadcast (const void *data, unsigned int len, bool exclusive=true, bool check_result=false, unsigned *nerr=NULL)
 

额外继承的成员函数

- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

详细描述

该类封装了 tcp_manager 管理类,可以动态添加目标服务端地址,同时动态创建与 每一个服务端的连接池

在文件 tcp_ipc.hpp15 行定义.

构造及析构函数说明

◆ tcp_ipc()

acl::tcp_ipc::tcp_ipc ( void  )

◆ ~tcp_ipc()

acl::tcp_ipc::~tcp_ipc ( void  )

成员函数说明

◆ add_addr()

tcp_ipc& acl::tcp_ipc::add_addr ( const char *  addr)

可以调用本方法显示添加一个服务器地址,只有当地址不存在时才会添加

参数
addr{const char*} 服务器地址,格式:IP:PORT
返回
{tcp_ipc&}

◆ addr_exist()

bool acl::tcp_ipc::addr_exist ( const char *  addr)

检测指定的服务器地址是否成功

参数
addr{const char*} 服务器地址,格式:IP:PORT
返回
{bool}

◆ broadcast()

size_t acl::tcp_ipc::broadcast ( const void *  data,
unsigned int  len,
bool  exclusive = true,
bool  check_result = false,
unsigned *  nerr = NULL 
)

向所有服务器发送数据包

参数
data{const void*} 要发送的数据包地址
len{unsigned int} 数据长度
exclusive{bool} 发送广播包时,是否加线程锁以防止其它线程 竞争内部连接池资源
check_result{bool} 是否读服务器响应以证明服务器收到了数据
nerr{unsigned *} 非 NULL 时存放失败的服务器的个数
返回
{size_t} 返回发送到的服务器的数量

◆ del_addr()

tcp_ipc& acl::tcp_ipc::del_addr ( const char *  addr)

根据服务器地址删除指定的连接池对象,当连接池对象正在被引用时,该对象 不会被删除,而是采用延迟删除方式,当最后一个连接被归还后该连接池对象 才会被真正删除

参数
addr{const char*} 服务器地址,格式:IP:PORT
返回
{tcp_ipc&}

◆ get_addrs()

void acl::tcp_ipc::get_addrs ( std::vector< string > &  addrs)

获得当前所有的服务器地址集合

参数
addrs{std::vector<string>&} 存储结果集

◆ get_manager()

tcp_manager& acl::tcp_ipc::get_manager ( void  ) const

获得 TCP 管理器对象

返回
{tcp_manager&}

◆ send()

bool acl::tcp_ipc::send ( const char *  addr,
const void *  data,
unsigned int  len,
string out = NULL 
)

向服务器发送指定长度的数据包

参数
addr{const char*} 指定的目标服务器地址
data{const void*} 要发送的数据包地址
len{unsigned int} 数据长度
out{string*} 当该对象非 NULL 时表明需要从服务器读取响应数据, 响应结果将被存放在该缓冲区中,如果该对象为 NULL,则表示无需读取 服务器的响应数据
返回
{bool} 发送是否成功

◆ set_conn_timeout()

tcp_ipc& acl::tcp_ipc::set_conn_timeout ( int  conn_timeout)

设置每个连接的网络连接超时时间

参数
conn_timeout{int} 网络连接超时时间(秒)
返回
{tcp_ipc&}

◆ set_idle()

tcp_ipc& acl::tcp_ipc::set_idle ( int  ttl)

设置连接池中每个连接了空闲时间,当连接空闲时间超过设置值时将被关闭

参数
ttl{int} 空闲连接的最大超时时间
返回
{tcp_ipc&}

◆ set_limit()

tcp_ipc& acl::tcp_ipc::set_limit ( int  max)

设置与每个服务器所建连接池的最大连接限制

参数
max{int} 每个连接池的最大连接限制,当 <= 0 时则不限制连接数
返回
{tcp_ipc&}

◆ set_rw_timeout()

tcp_ipc& acl::tcp_ipc::set_rw_timeout ( int  timeout)

设置每个连接的网络读写超时时间

参数
timeout{int} 读写超时时间(秒)
返回
{tcp_ipc&}

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