acl  3.5.3.0
acl::connect_pool类 参考abstract

#include <connect_pool.hpp>

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

Public 成员函数

 connect_pool (const char *addr, size_t max, size_t idx=0)
 
virtual ~connect_pool ()
 
connect_poolset_timeout (int conn_timeout, int rw_timeout)
 
connect_poolset_retry_inter (int retry_inter)
 
connect_poolset_idle_ttl (time_t ttl)
 
connect_poolset_check_inter (int n)
 
connect_clientpeek (bool on=true)
 
void bind_one (connect_client *conn)
 
void put (connect_client *conn, bool keep=true)
 
int check_idle (time_t ttl, bool exclusive=true)
 
void set_alive (bool ok)
 
bool aliving ()
 
const char * get_addr () const
 
size_t get_max () const
 
size_t get_count () const
 
size_t get_idx () const
 
void reset_statistics (int inter)
 
unsigned long long get_total_used () const
 
unsigned long long get_current_used () const
 
void set_key (const char *key)
 
const char * get_key (void) const
 

Protected 成员函数

virtual connect_clientcreate_connect ()=0
 
void set_delay_destroy ()
 
- Protected 成员函数 继承自 acl::acl::noncopyable
 noncopyable ()
 
 ~noncopyable ()
 

Protected 属性

bool alive_
 
bool delay_destroy_
 
int retry_inter_
 
time_t last_dead_
 
char key_ [256]
 
char addr_ [256]
 
int conn_timeout_
 
int rw_timeout_
 
size_t idx_
 
size_t max_
 
size_t count_
 
time_t idle_ttl_
 
time_t last_check_
 
int check_inter_
 
locker lock_
 
unsigned long long total_used_
 
unsigned long long current_used_
 
time_t last_
 
std::list< connect_client * > pool_
 

友元

class connect_manager
 

详细描述

客户端连接池类,实现对连接池的动态管理,该类为纯虚类,需要子类实现 纯虚函数 create_connect 用于创建与服务端的一个连接,当允许该类 对象允许通过 set_delay_destroy() 设置延迟销毁时,该类的子类实例 必须是动态对象

在文件 connect_pool.hpp19 行定义.

构造及析构函数说明

◆ connect_pool()

acl::connect_pool::connect_pool ( const char *  addr,
size_t  max,
size_t  idx = 0 
)

构造函数

参数
addr{const char*} 服务器监听地址,格式:ip:port(domain:port)
max{size_t} 连接池最大连接个数限制,如果该值设为 0,则不设置 连接池的连接上限
idx{size_t} 该连接池对象在集合中的下标位置(从 0 开始)

◆ ~connect_pool()

virtual acl::connect_pool::~connect_pool ( )
virtual

该类当允许自行销毁时,类实例应为动态对象

成员函数说明

◆ aliving()

bool acl::connect_pool::aliving ( )

检查连接池是否正常,当连接池有问题时,该函数还会检测该连接池是否应该 自动恢复,如果允许恢复,则将该连接池又置为可用状态

返回
{bool} 返回 true 表示当前连接池处于正常状态,否则表示当前 连接池不可用

◆ bind_one()

void acl::connect_pool::bind_one ( connect_client conn)

将一个不属于当前连接池的连接对象与当前连接池对象绑定,使之从属于当前 连接池对象

参数
conn{redis_client*}

◆ check_idle()

int acl::connect_pool::check_idle ( time_t  ttl,
bool  exclusive = true 
)

检查连接池中空闲的连接,将过期的连接释放掉

参数
ttl{time_t} 空闲时间间隔超过此值的连接将被释放
exclusive{bool} 内部是否需要加锁
返回
{int} 被释放的空闲连接个数

◆ create_connect()

virtual connect_client* acl::connect_pool::create_connect ( )
protectedpure virtual

纯虚函数,需要子类实现

返回
{connect_client*}

acl::redis_client_pool, acl::mysql_pool, acl::http_request_pool, acl::memcache_pool, acl::tcp_pool, acl::sqlite_pool , 以及 acl::pgsql_pool 内被实现.

◆ get_addr()

const char* acl::connect_pool::get_addr ( ) const
inline

获取连接池的服务器地址

返回
{const char*} 返回非空地址

在文件 connect_pool.hpp118 行定义.

119  {
120  return addr_;
121  }

◆ get_count()

size_t acl::connect_pool::get_count ( ) const
inline

获取连接池当前连接数个数

返回
{size_t}

在文件 connect_pool.hpp136 行定义.

137  {
138  return count_;
139  }

◆ get_current_used()

unsigned long long acl::connect_pool::get_current_used ( ) const
inline

获取该连接池当前的使用次数

返回
{unsigned long long}

在文件 connect_pool.hpp168 行定义.

169  {
170  return current_used_;
171  }
unsigned long long current_used_

◆ get_idx()

size_t acl::connect_pool::get_idx ( ) const
inline

获得该连接池对象在连接池集合中的下标位置

返回
{size_t}

在文件 connect_pool.hpp145 行定义.

146  {
147  return idx_;
148  }

◆ get_key()

const char* acl::connect_pool::get_key ( void  ) const
inline

在文件 connect_pool.hpp175 行定义.

176  {
177  return key_;
178  }

◆ get_max()

size_t acl::connect_pool::get_max ( ) const
inline

获取连接池最大连接数限制,如果返回值为 0 则表示没有最大连接数限制

返回
{size_t}

在文件 connect_pool.hpp127 行定义.

128  {
129  return max_;
130  }

◆ get_total_used()

unsigned long long acl::connect_pool::get_total_used ( ) const
inline

获取该连接池总共被使用的次数

在文件 connect_pool.hpp159 行定义.

160  {
161  return total_used_;
162  }
unsigned long long total_used_

◆ peek()

connect_client* acl::connect_pool::peek ( bool  on = true)

从连接池中尝试性获取一个连接,当服务器不可用、距上次服务端连接异常 时间间隔未过期或连接池连接个数达到连接上限则将返回 NULL;当创建一个 新的与服务器的连接时失败,则该连接池会被置为不可用状态

参数
on{bool} 该参数决定当连接池没有可用连接时是否创建新的连接, 如果为 false,则不会创建新连接
返回
{connect_client*} 如果为空则表示该服务器连接池对象不可用

◆ put()

void acl::connect_pool::put ( connect_client conn,
bool  keep = true 
)

释放一个连接至连接池中,当该连接池对应的服务器不可用或调用者希望关闭 该连接时,则该连接将会被直接释放

参数
conn{redis_client*}
keep{bool} 是否针对该连接保持长连接

◆ reset_statistics()

void acl::connect_pool::reset_statistics ( int  inter)

重置统计计数器

参数
inter{int} 统计的时间间隔

◆ set_alive()

void acl::connect_pool::set_alive ( bool  ok)

设置连接池的存活状态

参数
ok{bool} 设置该连接是否正常

◆ set_check_inter()

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

设置自动检查空闲连接的时间间隔,缺省值为 30 秒

参数
n{int} 时间间隔
返回
{connect_pool&}

◆ set_delay_destroy()

void acl::connect_pool::set_delay_destroy ( )
protected

设置该连接池对象为延迟自销毁,当内部发现引用计数为 0 时会自行销毁

◆ set_idle_ttl()

connect_pool& acl::connect_pool::set_idle_ttl ( time_t  ttl)

设置连接池中空闲连接的空闲生存周期

参数
ttl{time_t} 空闲连接生存周期,当该值 < 0 表示空闲连接不过期, == 0 时表示立刻过期,> 0 表示空闲该时间段后将被释放
返回
{connect_pool&}

◆ set_key()

void acl::connect_pool::set_key ( const char *  key)

◆ set_retry_inter()

connect_pool& acl::connect_pool::set_retry_inter ( int  retry_inter)

设置连接池异常的重试时间间隔

参数
retry_inter{int} 当连接断开后,重新再次打开连接的时间间隔(秒), 当该值 <= 0 时表示允许连接断开后可以立即重连,否则必须超过该时间间隔 后才允许断开重连;未调用本函数时,内部缺省值为 1 秒
返回
{connect_pool&}

◆ set_timeout()

connect_pool& acl::connect_pool::set_timeout ( int  conn_timeout,
int  rw_timeout 
)

此接口用来设置超时时间

参数
conn_timeout{int} 网络连接超时时间(秒)
rw_timeout{int} 网络 IO 超时时间(秒)

友元及相关函数文档

◆ connect_manager

friend class connect_manager
friend

在文件 connect_pool.hpp187 行定义.

类成员变量说明

◆ addr_

char acl::connect_pool::addr_[256]
protected

在文件 connect_pool.hpp202 行定义.

◆ alive_

bool acl::connect_pool::alive_
protected

在文件 connect_pool.hpp195 行定义.

◆ check_inter_

int acl::connect_pool::check_inter_
protected

在文件 connect_pool.hpp210 行定义.

◆ conn_timeout_

int acl::connect_pool::conn_timeout_
protected

在文件 connect_pool.hpp203 行定义.

◆ count_

size_t acl::connect_pool::count_
protected

在文件 connect_pool.hpp207 行定义.

◆ current_used_

unsigned long long acl::connect_pool::current_used_
protected

在文件 connect_pool.hpp214 行定义.

◆ delay_destroy_

bool acl::connect_pool::delay_destroy_
protected

在文件 connect_pool.hpp196 行定义.

◆ idle_ttl_

time_t acl::connect_pool::idle_ttl_
protected

在文件 connect_pool.hpp208 行定义.

◆ idx_

size_t acl::connect_pool::idx_
protected

在文件 connect_pool.hpp205 行定义.

◆ key_

char acl::connect_pool::key_[256]
protected

在文件 connect_pool.hpp201 行定义.

◆ last_

time_t acl::connect_pool::last_
protected

在文件 connect_pool.hpp215 行定义.

◆ last_check_

time_t acl::connect_pool::last_check_
protected

在文件 connect_pool.hpp209 行定义.

◆ last_dead_

time_t acl::connect_pool::last_dead_
protected

在文件 connect_pool.hpp199 行定义.

◆ lock_

locker acl::connect_pool::lock_
protected

在文件 connect_pool.hpp212 行定义.

◆ max_

size_t acl::connect_pool::max_
protected

在文件 connect_pool.hpp206 行定义.

◆ pool_

std::list<connect_client*> acl::connect_pool::pool_
protected

在文件 connect_pool.hpp216 行定义.

◆ retry_inter_

int acl::connect_pool::retry_inter_
protected

在文件 connect_pool.hpp198 行定义.

◆ rw_timeout_

int acl::connect_pool::rw_timeout_
protected

在文件 connect_pool.hpp204 行定义.

◆ total_used_

unsigned long long acl::connect_pool::total_used_
protected

在文件 connect_pool.hpp213 行定义.


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