acl  3.5.3.0
connect_client.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stdlib/noncopyable.hpp"
4 
5 namespace acl
6 {
7 
8 class connect_pool;
9 
11 {
12 public:
14  : conn_timeout_(5)
15  , rw_timeout_(5)
16  , when_(0)
17  , pool_(NULL) {}
18 
19  virtual ~connect_client() {}
20 
21  /**
22  * 获得该连接对象最近一次被使用的时间截
23  * @return {time_t}
24  */
25  time_t get_when()
26  {
27  return when_;
28  }
29 
30  /**
31  * 设置该连接对象当前被使用的时间截
32  */
33  void set_when(time_t when)
34  {
35  when_ = when;
36  }
37 
38  /**
39  * 纯虚函数,子类必须实现此函数用于连接服务器
40  * @return {bool} 是否连接成功
41  */
42  virtual bool open() = 0;
43 
44  /**
45  * 获得连接池对象引用,在 connect_pool 内部创建
46  * 连接对象会调用 set_pool 设置连接池对象句柄
47  * @return {connect_pool*}
48  */
50  {
51  return pool_;
52  }
53 
54 public:
55  /**
56  * 虚函数,该函数设置网络连接超时时间及网络 IO 超时时间,子类可以重载该虚函数,
57  * 以便于设置内部的对象超时时间
58  * @param conn_timeout {int} 网络连接超时时间(秒)
59  * @param rw_timeout {int} 网络 IO 超时时间(秒)
60  */
61  virtual void set_timeout(int conn_timeout, int rw_timeout)
62  {
63  conn_timeout_ = conn_timeout;
64  rw_timeout_ = rw_timeout;
65  }
66 
67 protected:
70 
71  friend class connect_pool;
72 
73  time_t when_;
75 
76  void set_pool(connect_pool* pool)
77  {
78  pool_ = pool;
79  }
80 };
81 
82 } // namespace acl
connect_pool * get_pool() const
connect_pool * pool_
virtual void set_timeout(int conn_timeout, int rw_timeout)
void set_pool(connect_pool *pool)
#define ACL_CPP_API
void set_when(time_t when)