📄 eventlib.h
字号:
#ifndef _EVENT_CENTER_DEF
#define _EVENT_CENTER_DEF
#include <sys/types.h>
#define _DEBUG_EVENT_PRINTF
#if defined _DEBUG_EVENT_PRINTF
#define debug_printf(format, ...)\
printf(format, ## __VA_ARGS__)
#else
#define debug_printf(format, ...)
#endif
#define MAX_TRY_NUM 10
#define MAX_LEN_NAME 30
#define INVALID_SOCKET -1
#define EVENT_MONITOR_ADDR "127.0.0.2"
#define EVENT_MONITOR_PORT 9999
#define EVENT_INFORM_ADDR EVENT_MONITOR_ADDR
#define EVENT_INFORM_PORT EVENT_MONITOR_PORT
#define EVENT_REGISTER_ADDR EVENT_MONITOR_ADDR
#define EVENT_REGISTER_PORT EVENT_MONITOR_PORT
#define EVENT_UNREG_ADDR EVENT_MONITOR_ADDR
#define EVENT_UNREG_PORT EVENT_MONITOR_PORT
#define EVENT_REQUEST_ADDR EVENT_MONITOR_ADDR
#define EVENT_REQUEST_PORT EVENT_MONITOR_PORT
#define UNREGISTER_SUPPORTED
typedef int SOCKET;
typedef unsigned char BYTE;
typedef unsigned long LONG;
typedef unsigned char BOOL;
/* event types */
typedef unsigned long events_t;
#define TIME_CH_EVENT 0x00000001
#define IP_CH_EVENT 0x00000002
#define EVENTS_MASK (TIME_CH_EVENT | IP_CH_EVENT)
#define MAX_EVENTS 2
#define is_events_invalid(events) \
((events & EVENTS_MASK)? 0 : 1)
#define set_events(events_sets, events)\
(events_sets |= events)
#define clear_events(events_sets, events)\
(events_sets &= ~events)
#define is_events_set(events_sets, events)\
((events_sets & events) != 0)
#define ETYPE2INDEX_START(events, i)\
{\
for (i = 0; i < MAX_EVENTS; i++){\
if (events & (1<<i)){
#define ETYPE2INDEX_END\
}\
}\
}
/* frame types */
enum frame_type{
FRAME_INVALID = 0,
FRAME_FIRST,
FRAME_REGISTER = FRAME_FIRST,
#if defined UNREGISTER_SUPPORTED
FRAME_UNREGISTER,
#endif
FRAME_ACK,
FRAME_INFORM,
FRAME_REQUEST,
FRAME_REPONSE,
FRAME_END = FRAME_REPONSE
};
#define is_frame_type_invalid(type) \
((FRAME_FIRST <= type && type <= FRAME_END)? 0 : 1)
/* exchange struct */
typedef struct e_register{
pid_t reg_pid;
events_t reg_events;
int reg_sig;
BOOL reg_ignore;
char reg_name[MAX_LEN_NAME+1];
}e_register;
#if defined UNREGISTER_SUPPORTED
typedef struct e_unregister{
char unreg_name[MAX_LEN_NAME+1];
}e_unregister;
#endif
typedef struct e_inform{
events_t inf_events;
}e_inform;
typedef struct e_request{
char request_name[MAX_LEN_NAME+1];
}e_request;
typedef struct e_reponse{
events_t reponse_events;
}e_reponse;
typedef struct e_ack{
BYTE ack_ok; /* 1 - ok, 0 - fail */
}e_ack;
/* frame type */
typedef struct event_frame{
enum frame_type type;
union{
struct e_register reg;
#if defined UNREGISTER_SUPPORTED
struct e_unregister unreg;
#endif
struct e_inform inform;
struct e_request request;
struct e_reponse reponse;
struct e_ack ack;
}body;
}event_frame;
int
close_socket(SOCKET *sock){
if (*sock != INVALID_SOCKET){
close(*sock);
*sock = INVALID_SOCKET;
return 0;
} else{
return -1;
}
}
/* external call interface */
int _receive_frame(SOCKET s_src, struct event_frame *p_in);
int _send_frame(SOCKET s_dest, struct event_frame *p_out);
int send_frame(struct sockaddr_in *server, struct event_frame *frame,\
SOCKET *p_sock);
int send_ack(SOCKET s, BOOL sta);
int client_register(pid_t pid, char *p_name, events_t events,\
int num_sig, BOOL req_ignore);
#if defined UNREGISTER_SUPPORTED
int client_unregister(const char *p_name);
#endif
int client_request(char *p_name, events_t *events);
int events_inform(events_t events);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -