32 |
32 |
33 #include "../util/io.h" |
33 #include "../util/io.h" |
34 |
34 |
35 #include "event_solaris.h" |
35 #include "event_solaris.h" |
36 |
36 |
|
37 #include "httprequest.h" |
|
38 |
37 EVHandler* evhandler_create(EventHandlerConfig *cfg) { |
39 EVHandler* evhandler_create(EventHandlerConfig *cfg) { |
38 EVHandler *ev = malloc(sizeof(EVHandler)); |
40 EVHandler *ev = malloc(sizeof(EVHandler)); |
39 ev->current = 0; |
41 ev->current = 0; |
40 ev->instances = calloc(cfg->nthreads, sizeof(void*)); |
42 ev->instances = calloc(cfg->nthreads, sizeof(void*)); |
41 ev->numins = cfg->nthreads; |
43 ev->numins = cfg->nthreads; |
122 // call event finish handlers |
124 // call event finish handlers |
123 for(int i=0;i<numfinished;i++) { |
125 for(int i=0;i<numfinished;i++) { |
124 Event *event = finished[i]; |
126 Event *event = finished[i]; |
125 finished[i]->finish(ev, event); |
127 finished[i]->finish(ev, event); |
126 } |
128 } |
|
129 // execute return calls |
|
130 for(int i=0;i<ev->numret;i++) { |
|
131 EVReturn ret = ev->fnreturn[i]; |
|
132 nsapi_saf_return(ret.sn, ret.rq, ret.ret); |
|
133 } |
127 } |
134 } |
128 } |
135 } |
129 |
136 |
130 int ev_convert2sys_events(int events) { |
137 int ev_convert2sys_events(int events) { |
131 int e = 0; |
138 int e = 0; |
223 } |
230 } |
224 |
231 |
225 int event_removepoll(EventHandler *ev, SYS_NETFD fd) { |
232 int event_removepoll(EventHandler *ev, SYS_NETFD fd) { |
226 return ((IOStream*)fd)->poll(fd, ev, IO_POLL_NONE, NULL); |
233 return ((IOStream*)fd)->poll(fd, ev, IO_POLL_NONE, NULL); |
227 } |
234 } |
|
235 |
|
236 void ev_saf_return(EventHandler *h, Session *sn, Request *rq, int ret) { |
|
237 h->fnreturn[h->numret++] = (EVReturn){ sn, rq, ret }; |
|
238 } |