acl  3.5.3.0
check_client.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include <map>
4 #include <vector>
5 #if !defined(_WIN32) && !defined(_WIN64)
6 #include <sys/time.h>
7 #endif
8 #include "../stream/aio_socket_stream.hpp"
9 #include "../stdlib/string.hpp"
10 
11 namespace acl
12 {
13 
14 class check_timer;
15 class aio_socket_stream;
16 
17 /**
18  * 异步连接回调函数处理类
19  */
21 {
22 public:
23  check_client(check_timer& timer, const char* addr,
24  aio_socket_stream& conn, struct timeval& begin);
25 
26  /**
27  * 获得输入的非阻塞 IO 句柄
28  * @return {aio_socket_stream&}
29  */
31  {
32  return conn_;
33  }
34 
35  /**
36  * 获得传入的服务端地址
37  * @return {const char*}
38  */
39  const char* get_addr() const
40  {
41  return addr_.c_str();
42  }
43 
44  /**
45  * 设置连接是否是存活的
46  * @param yesno {bool}
47  */
48  void set_alive(bool yesno);
49 
50  /**
51  * 关闭非阻塞 IO 句柄
52  */
53  void close();
54 
55 public:
56  // 以下的函数仅供内部使用
57  /**
58  * 当前检测对象是否处于阻塞模式下
59  * @return {bool}
60  */
61  bool blocked() const
62  {
63  return blocked_;
64  }
65 
66  /**
67  * 在阻塞检测方式下,调用此函数用来设置检测对象是否处于阻塞状态,
68  * 处于阻塞状态时该检测对象是禁止通过调用方法 close 来关闭的
69  * @param on {bool} 设置检测对象是否处于阻塞状态,缺省为处于阻塞状态
70  */
71  void set_blocked(bool on);
72 
73 private:
74  // 基类虚函数
75  bool open_callback();
76  void close_callback();
77  bool timeout_callback();
78 
79 private:
80  ~check_client() {}
81 
82 private:
83  bool blocked_;
84  bool aliving_;
85  bool timedout_;
86  struct timeval begin_;
87  check_timer& timer_;
88  aio_socket_stream& conn_;
89  string addr_;
90 };
91 
92 } // namespace acl
bool blocked() const
const char * get_addr() const
aio_socket_stream & get_conn() const
#define ACL_CPP_API