src/server/daemon/event.h

changeset 193
aa8393527b1e
parent 162
b169992137a8
parent 172
5580517faafc
child 256
19259b6c5cf7
equal deleted inserted replaced
183:f33974f0dce0 193:aa8393527b1e
34 34
35 #ifdef __cplusplus 35 #ifdef __cplusplus
36 extern "C" { 36 extern "C" {
37 #endif 37 #endif
38 38
39 #define EVENT_POLLIN 0x1 39 typedef struct EVHandler {
40 #define EVENT_POLLOUT 0x2 40 EventHandler **instances;
41 41 uint32_t numins;
42 typedef struct event_handler event_handler_t; 42 uint32_t current;
43 typedef struct event event_t; 43 } EVHandler;
44
45 typedef int(*event_func)(event_handler_t*, event_t*);
46
47 struct event {
48 pblock *pb;
49 Session *sn;
50 Request *rq;
51 event_func fn;
52 event_func finish;
53 intptr_t object;
54 int events;
55 int poll;
56 void *cookie;
57 int error;
58 };
59 44
60 typedef struct event_handler_conf { 45 typedef struct event_handler_conf {
61 sstr_t name; 46 sstr_t name;
62 int nthreads; 47 int nthreads;
63 int isdefault; 48 int isdefault;
64 } EventHandlerConfig; 49 } EventHandlerConfig;
65 50
66 typedef struct event_handler_object {
67 event_handler_t *handler;
68 int nthreads;
69 } EventHandlerObject;
70
71 int create_event_handler(EventHandlerConfig *cfg); 51 int create_event_handler(EventHandlerConfig *cfg);
72 52
73 int check_event_handler_cfg(); 53 int check_event_handler_cfg();
74 54
75 event_handler_t* get_default_event_handler(); 55 EVHandler* get_default_event_handler();
76 56
77 event_handler_t* get_event_handler(char *name); 57 EVHandler* get_event_handler(char *name);
58
59 EventHandler* ev_instance(EVHandler *ev);
78 60
79 /* implementation in event_$platform */ 61 /* implementation in event_$platform */
80 event_handler_t* evhandler_create(int numthreads); 62 EVHandler* evhandler_create(EventHandlerConfig *cfg);
81 63
82 int ev_pollin(event_handler_t *h, int fd, event_t *event); 64 int ev_pollin(EventHandler *h, int fd, Event *event);
65 int ev_pollout(EventHandler *h, int fd, Event *event);
66 int ev_remove_poll(EventHandler *h, int fd);
67 int ev_send(EventHandler *h, Event *event);
83 68
84 int ev_pollout(event_handler_t *h, int fd, event_t *event); 69 int ev_aioread(int fd, aiocb_s *cb);
85 70 int ev_aiowrite(int fd, aiocb_s *cb);
86 int evt_send(event_handler_t *h, event_t *event);
87 71
88 72
89 #ifdef __cplusplus 73 #ifdef __cplusplus
90 } 74 }
91 #endif 75 #endif

mercurial