acl
3.5.3.0
ipc_client.hpp
浏览该文件的文档.
1
#pragma once
2
#include "../acl_cpp_define.hpp"
3
#include <list>
4
#include "../stream/aio_socket_stream.hpp"
5
6
namespace
acl
{
7
8
typedef
struct
MSG_HDR
9
{
10
int
nMsg
;
11
int
dlen
;
12
#if defined(_WIN32) || defined(_WIN64)
13
__int64
magic
;
14
#else
15
long
long
int
magic
;
16
#endif
17
}
MSG_HDR
;
18
19
typedef
enum
20
{
21
IO_WAIT_HDR
,
22
IO_WAIT_DAT
23
}
io_status
;
24
25
class
aio_handle;
26
class
ipc_adapter;
27
class
aio_socket_stream;
28
class
socket_stream;
29
30
/**
31
* 异步IP消息类
32
*/
33
class
ACL_CPP_API
ipc_client
:
private
aio_open_callback
34
{
35
public
:
36
#if defined(_WIN32) || defined(_WIN64)
37
ipc_client
(__int64 magic = -1);
38
#else
39
ipc_client
(
long
long
int
magic = -1);
40
#endif
41
virtual
~
ipc_client
();
42
43
/**
44
* 直接销毁接口,子类可以重载该接口
45
*/
46
virtual
void
destroy
()
47
{
48
delete
this
;
49
}
50
51
/**
52
* 当调用 open 函数连接消息服务器成功时调用此函数
53
*/
54
virtual
void
on_open
() {}
55
56
/**
57
* 当异步流关闭时的回调接口
58
*/
59
virtual
void
on_close
() {}
60
61
/**
62
* 当收到消息时的回调函数,子类必须实现该接口
63
* @param nMsg {int} 用户添加的自定义消息值
64
* @param data {void*} 消息数据
65
* @param dlen {int} 消息数据的长度
66
*/
67
virtual
void
on_message(
int
nMsg,
void
* data,
int
dlen);
68
69
/**
70
* 与消息服务器之间建立连接并创建异步流
71
* @param handle {aio_handle*} 异步引擎句柄
72
* @param addr {const char*} 消息服务器监听地址,格式为:
73
* IP:PORT(支持_WIN32/UNIX),unix_path (仅支持UNIX)
74
* @param timeout {int} 连接超时时间
75
*/
76
bool
open(
aio_handle
* handle,
const
char
* addr,
int
timeout);
77
78
/**
79
* 异步流已经建立,调用此函数完成 ipc_client 连接过程
80
* @param client {aio_socket_stream*} 异步连接流
81
*/
82
void
open(
aio_socket_stream
* client);
83
84
/**
85
* 与消息服务器之间建立连接并创建同步流
86
* @param addr {const char*} 消息服务器监听地址,格式为:
87
* IP:PORT(支持_WIN32/UNIX),unix_path (仅支持UNIX)
88
* @param timeout {int} 连接超时时间
89
*/
90
bool
open(
const
char
* addr,
int
timeout);
91
92
/**
93
* 同步流已经建立,调用此函数完成 ipc_client 连接过程
94
* @param client {socket_stream*} 异步连接流
95
*/
96
void
open(
socket_stream
* client);
97
98
/**
99
* 消息流已经创建,调用此函数打开 IPC 通道
100
*/
101
void
wait();
102
103
/**
104
* 主动关闭消息流
105
*/
106
void
close();
107
108
/**
109
* 连接流是否正常打开着
110
* @return {bool}
111
*/
112
bool
active()
const
;
113
114
/**
115
* 添加指定消息的回调过程对象
116
* @param nMsg {int} 消息号
117
*/
118
void
append_message(
int
nMsg);
119
120
/**
121
* 删除指定消息的回调过程对象
122
* @param nMsg {int} 消息号
123
*/
124
void
delete_message(
int
nMsg);
125
126
/**
127
* 发送消息
128
* @param nMsg {int} 消息号
129
* @param data {const void*} 数据
130
* @param dlen {int} 数据长度
131
*/
132
void
send_message(
int
nMsg,
const
void
* data,
int
dlen);
133
134
/**
135
* 获得异步流句柄
136
* @return {aio_socket_stream*}
137
*/
138
aio_socket_stream
* get_async_stream()
const
;
139
140
/**
141
* 获得异步引擎句柄
142
*/
143
aio_handle
& get_handle()
const
;
144
145
/**
146
* 获得同步流够本
147
* @return {socket_stream*}
148
*/
149
socket_stream
* get_sync_stream()
const
;
150
protected
:
151
/**
152
* 触发消息过程
153
* @param nMsg {int} 消息ID
154
* @param data {void*} 接收到的消息数据地址
155
* @param dlen {int} 接收到的消息数据长度
156
*/
157
void
trigger(
int
nMsg,
void
* data,
int
dlen);
158
private
:
159
#if defined(_WIN32) || defined(_WIN64)
160
__int64 magic_;
161
#else
162
long
long
int
magic_;
163
#endif
164
char
* addr_;
165
std::list<int> messages_;
166
//aio_handle* handle_;
167
aio_socket_stream
* async_stream_;
168
socket_stream
* sync_stream_;
169
socket_stream
* sync_stream_inner_;
170
bool
closing_;
171
172
io_status
status_;
173
MSG_HDR
hdr_;
174
175
// 基类虚函数
176
177
virtual
bool
read_callback(
char
* data,
int
len);
178
virtual
bool
write_callback();
179
virtual
void
close_callback();
180
virtual
bool
timeout_callback();
181
virtual
bool
open_callback();
182
};
183
184
}
// namespace acl
acl::ipc_client::on_close
virtual void on_close()
Definition:
ipc_client.hpp:59
acl::ipc_client
Definition:
ipc_client.hpp:33
acl::io_status
io_status
Definition:
ipc_client.hpp:19
acl::IO_WAIT_HDR
Definition:
ipc_client.hpp:21
acl::MSG_HDR
struct acl::MSG_HDR MSG_HDR
acl::MSG_HDR::nMsg
int nMsg
Definition:
ipc_client.hpp:10
acl
Definition:
acl_cpp_init.hpp:4
acl::ipc_client::on_open
virtual void on_open()
Definition:
ipc_client.hpp:54
acl::MSG_HDR::magic
long long int magic
Definition:
ipc_client.hpp:15
acl::MSG_HDR::dlen
int dlen
Definition:
ipc_client.hpp:11
acl::ipc_client::destroy
virtual void destroy()
Definition:
ipc_client.hpp:46
acl::socket_stream
Definition:
socket_stream.hpp:14
acl::aio_handle
Definition:
aio_handle.hpp:29
acl::aio_open_callback
Definition:
aio_socket_stream.hpp:16
acl::aio_socket_stream
Definition:
aio_socket_stream.hpp:40
ACL_CPP_API
#define ACL_CPP_API
Definition:
acl_cpp_define.hpp:16
acl::MSG_HDR
Definition:
ipc_client.hpp:8
acl::IO_WAIT_DAT
Definition:
ipc_client.hpp:22
include
acl_cpp
ipc
ipc_client.hpp
生成于 2021年 九月 10日 星期五 11:14:44 , 为 acl使用
1.8.15