acl  3.5.3.0
ipc_server.hpp
浏览该文件的文档.
1 #pragma once
2 #include "../acl_cpp_define.hpp"
3 #include "../stream/aio_listen_stream.hpp"
4 
5 namespace acl {
6 
7 class aio_handle;
8 class aio_listen_stream;
9 
10 /**
11  * 异步消息服务端,纯虚类
12  */
14 {
15 public:
16  ipc_server();
17 
18  virtual ~ipc_server();
19 
20  /**
21  * 打开异步监听服务流
22  * @param handle {aio_handle*} 异步引擎句柄,非空
23  * @param addr {const char*} 监听地址
24  * @return {bool} 监听是否成功
25  */
26  bool open(aio_handle* handle, const char* addr = "127.0.0.1:0");
27 
28  /**
29  * 当 open 成功后通过此函数获得监听地址
30  * @return {const char*} 监听地址,格式为: IP:PORT
31  */
32  const char* get_addr() const;
33 
34  /**
35  * 获得异步流句柄
36  * @return {aio_listen_stream*}
37  */
38  aio_listen_stream* get_stream() const;
39 
40  /**
41  * 获得异步引擎句柄
42  */
43  aio_handle& get_handle() const;
44 
45 protected:
46  /**
47  * 当监听流成功打开后的回调函数
48  * @param addr {const char*} 实际的监听地址,格式:IP:PORT
49  */
50  virtual void on_open(const char*addr)
51  {
52  (void) addr;
53  }
54 
55  /**
56  * 当监听流关闭时的回调函数
57  */
58  virtual void on_close() {}
59 
60  /**
61  * 当异步监听流获得一个客户端连接后的回调函数
62  * @param client {aio_socket_stream*} 客户端 IPC 流
63  */
64  virtual void on_accept(aio_socket_stream* client)
65  {
66  (void) client;
67  }
68 
69 #if defined(_WIN32) || defined(_WIN64)
70  /**
71  * 对于基于 _WIN32 窗口消息的情况,当调用 open 时,则内部
72  * 会自动调用 create_windows 过程
73  */
74  virtual bool create_window()
75  {
76  return false;
77  }
78 #endif
79 
80 private:
81  aio_handle* handle_;
82  aio_listen_stream* sstream_;
83 
84  /**
85  * 基类虚函数,当有新连接到达后调用此回调过程
86  * @param client {aio_socket_stream*} 异步客户端流
87  * @return {bool} 返回 true 以通知监听流继续监听
88  */
89  virtual bool accept_callback(aio_socket_stream* client);
90 
91  /**
92  * 基类虚函数,当监听流关闭时的回调过程
93  */
94  virtual void close_callback();
95 
96  /**
97  * 基类虚函数,当监听流超时的回调过程
98  */
99  virtual bool timeout_callback();
100 };
101 
102 } // namespace acl
virtual void on_accept(aio_socket_stream *client)
Definition: ipc_server.hpp:64
virtual void on_open(const char *addr)
Definition: ipc_server.hpp:50
virtual void on_close()
Definition: ipc_server.hpp:58
#define ACL_CPP_API