acl
3.5.3.0
beanstalk_pool.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include "../stdlib/noncopyable.hpp"
4
#include <map>
5
6
#if !defined(ACL_CLIENT_ONLY) && !defined(ACL_BEANSTALK_DISABLE)
7
8
namespace
acl
{
9
10
class
beanstalk;
11
class
locker;
12
13
/**
14
* beanstalk 客户端连接池,可以同时连接不同的 beanstalkd 服务器,
15
* 每个 beanstalkd 有多个连接,内部自动加锁;但不控制连接数限制,
16
* 用户应自行控制连接池的最大连接上限
17
*/
18
class
ACL_CPP_API
beanstalk_pool
:
public
noncopyable
19
{
20
public
:
21
beanstalk_pool
();
22
~
beanstalk_pool
();
23
24
/**
25
* 从连接池中取得一个 beanstalkd 的客户端连接
26
* @param addr {const char*} beanstalkd 服务地址(domain:port)
27
* @param clean_watch {bool} 在取得连接对象后是否自动取消所有的
28
* 已关注队列
29
* @param conn_timeout {int} 连接 beanstalkd 的超时时间
30
* @return {beanstalk*} 返回非空表示正常,否则表示出错
31
*/
32
beanstalk
* peek(
const
char
* addr,
bool
clean_watch =
true
,
33
int
conn_timeout = 60);
34
35
/**
36
* 将不用的 beanstalkd 连接放回到连接池中
37
* @param client {beanstalk*} beanstalkd 客户端连接
38
* @param clean_watch {bool} 是否取消已经关注的队列
39
* @param keep {bool} 如果为 true 则将 client 放回至连接池,
40
* 否则释放该连接
41
*/
42
void
put(
beanstalk
* client,
bool
clean_watch =
true
,
43
bool
keep =
true
);
44
private
:
45
locker
* lock_;
46
typedef
std::multimap<string, beanstalk*> bspool;
47
typedef
bspool::const_iterator pool_cit;
48
typedef
bspool::iterator pool_it;
49
typedef
std::pair<pool_it, pool_it> pool_range;
50
51
bspool pool_;
52
};
53
54
}
// namespace acl
55
56
#endif // !defined(ACL_CLIENT_ONLY) && !defined(ACL_BEANSTALK_DISABLE)
acl::locker
Definition:
locker.hpp:22
acl
Definition:
acl_cpp_init.hpp:4
acl::noncopyable
Definition:
noncopyable.hpp:6
acl::beanstalk
Definition:
beanstalk.hpp:33
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl::beanstalk_pool
Definition:
beanstalk_pool.hpp:18
include
acl_cpp
beanstalk
beanstalk_pool.hpp
生成于 2021年 九月 10日 星期五 11:14:44 , 为 acl使用
1.8.15