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 |