acl  3.5.3.0
acl_msgio.h
浏览该文件的文档.
1 #ifndef ACL_MSGIO_INCLUDE_H
2 #define ACL_MSGIO_INCLUDE_H
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include "../stdlib/acl_define.h"
9 #include "../stdlib/acl_vstring.h"
10 #include "../stdlib/acl_ring.h"
11 #include "../aio/acl_aio.h"
12 
13 typedef struct ACL_MSGIO ACL_MSGIO;
15 
16 typedef int (*ACL_MSGIO_NOTIFY_FN)(int msg_type, ACL_MSGIO *peer,
17  const ACL_MSGIO_INFO *info, void *arg);
18 
19 /**
20  * 消息类型定义
21  */
22 #define ACL_MSGIO_OK 0
23 #define ACL_MSGIO_TIMEOUT 1 /* 超时消息 */
24 #define ACL_MSGIO_EXCEPT 2 /* 异常消息 */
25 #define ACL_MSGIO_CONNECT 3 /* 连接成功消息 */
26 #define ACL_MSGIO_CONNECT_TIMEOUT 4 /* 连接超时消息 */
27 #define ACL_MSGIO_QUIT 5 /* 退出消息 */
28 #define ACL_MSGIO_OPEN 6 /* 数据流打开消息 */
29 
30 #define ACL_MSGIO_USER 1000
31 
33  struct {
34  int type;
35  int dlen;
36  } hdr;
37  struct {
39  } body;
40 };
41 
42 ACL_API void acl_msgio_init(void);
43 ACL_API void acl_msgio_close(ACL_MSGIO *mio);
44 ACL_API void acl_msgio_reg(ACL_MSGIO *mio, int id,
45  ACL_MSGIO_NOTIFY_FN callback, void *arg);
46 ACL_API void acl_msgio_listen_reg(ACL_MSGIO *mio, int id,
47  ACL_MSGIO_NOTIFY_FN callback, void *arg, int inherit);
48 ACL_API void acl_msgio_unreg(ACL_MSGIO *mio, int id, ACL_MSGIO_NOTIFY_FN callback);
49 ACL_API void acl_msgio_unreg_id(ACL_MSGIO *mio, int id);
50 ACL_API void acl_msgio_unreg_all(ACL_MSGIO *mio);
51 
52 ACL_API int acl_msgio_wait(ACL_MSGIO *mio);
53 ACL_API ACL_MSGIO *acl_msgio_listen(ACL_AIO *aio, const char *addr);
54 ACL_API ACL_MSGIO *acl_msgio_accept(ACL_MSGIO *listener);
55 ACL_API ACL_MSGIO *acl_msgio_connect(ACL_AIO *aio, const char *addr, int timeout);
56 ACL_API void acl_msgio_set_noblock(ACL_AIO *aio, ACL_MSGIO *mio);
57 
58 ACL_API int acl_msgio_send(ACL_MSGIO *mio, int type, void *data, int dlen);
59 /* void acl_msgio_timer(ACL_MSGIO *mio, ACL_MSGIO_NOTIFY_FN callback, void *arg); */
60 
61 ACL_API void acl_msgio_addr(const ACL_MSGIO *mio, char *buf, size_t size);
62 ACL_API ACL_AIO *acl_msgio_aio(ACL_MSGIO *mio);
65 
66 #define ACL_MSGIO_ON_MSG(id, callback, arg) do { \
67  acl_msgio_reg(NULL, id, callback, arg); \
68 } while(0)
69 
70 #ifdef __cplusplus
71 }
72 #endif
73 
74 #endif
ACL_API ACL_VSTREAM * acl_msgio_vstream(ACL_MSGIO *mio)
ACL_API void acl_msgio_init(void)
ACL_API ACL_MSGIO * acl_msgio_accept(ACL_MSGIO *listener)
ACL_API void acl_msgio_unreg(ACL_MSGIO *mio, int id, ACL_MSGIO_NOTIFY_FN callback)
ACL_API void acl_msgio_unreg_id(ACL_MSGIO *mio, int id)
ACL_API void acl_msgio_listen_reg(ACL_MSGIO *mio, int id, ACL_MSGIO_NOTIFY_FN callback, void *arg, int inherit)
struct ACL_MSGIO_INFO::@2 body
struct ACL_MSGIO ACL_MSGIO
Definition: acl_msgio.h:13
struct ACL_MSGIO_INFO::@1 hdr
ACL_API int acl_msgio_wait(ACL_MSGIO *mio)
ACL_API ACL_MSGIO * acl_msgio_listen(ACL_AIO *aio, const char *addr)
ACL_API void acl_msgio_close(ACL_MSGIO *mio)
struct ACL_AIO ACL_AIO
Definition: acl_aio.h:31
ACL_API ACL_ASTREAM * acl_msgio_astream(ACL_MSGIO *mio)
int(* ACL_MSGIO_NOTIFY_FN)(int msg_type, ACL_MSGIO *peer, const ACL_MSGIO_INFO *info, void *arg)
Definition: acl_msgio.h:16
ACL_API ACL_AIO * acl_msgio_aio(ACL_MSGIO *mio)
ACL_API void acl_msgio_unreg_all(ACL_MSGIO *mio)
ACL_VSTRING * buf
Definition: acl_msgio.h:38
ACL_API void acl_msgio_set_noblock(ACL_AIO *aio, ACL_MSGIO *mio)
ACL_API void acl_msgio_addr(const ACL_MSGIO *mio, char *buf, size_t size)
ACL_API int acl_msgio_send(ACL_MSGIO *mio, int type, void *data, int dlen)
ACL_API ACL_MSGIO * acl_msgio_connect(ACL_AIO *aio, const char *addr, int timeout)
ACL_API void acl_msgio_reg(ACL_MSGIO *mio, int id, ACL_MSGIO_NOTIFY_FN callback, void *arg)