src/server/daemon/event_bsd.c

changeset 541
1e1fca11aaff
parent 538
f9a7b5c76208
child 547
280bf87c8689
--- a/src/server/daemon/event_bsd.c	Sun Aug 11 10:09:20 2024 +0200
+++ b/src/server/daemon/event_bsd.c	Sun Aug 11 13:26:17 2024 +0200
@@ -43,7 +43,8 @@
     ev->numins = cfg->nthreads;
     
     for(int i=0;i<cfg->nthreads;i++) {
-        EventHandler *handler = malloc(sizeof(EventHandler));
+        EventHandlerKqueue *handler = malloc(sizeof(EventHandlerKqueue));
+        memset(handler, 0, sizeof(EventHandlerKqueue));
         ev->instances[i] = handler;
         
         handler->kqueue = kqueue();
@@ -64,7 +65,8 @@
 }
 
 
-void ev_handle_events(EventHandler *ev) {
+void ev_handle_events(EventHandlerKqueue *ev) {
+    EventHandler *h = (EventHandler*)ev;
     struct timespec timeout;
     timeout.tv_nsec = 0;
     timeout.tv_sec = 600;
@@ -103,7 +105,7 @@
             
             if(event->fn) {
                 int saved_ev = event->events;
-                if(!event->fn(ev, event)) {
+                if(!event->fn(h, event)) {
                     // ret 0 => remove event
                     
                     if(event->finish) {
@@ -145,12 +147,12 @@
             Event *event = finished[i];
             // check again if the finish callback is set
             if(finished[i]->finish) {
-                finished[i]->finish(ev, event);
+                finished[i]->finish(h, event);
             }
         }
         // execute return calls
-        for(int i=0;i<ev->numret;i++) {
-            EVReturn ret = ev->fnreturn[i];
+        for(int i=0;i<ev->base.numret;i++) {
+            EVReturn ret = ev->base.fnreturn[i];
             nsapi_saf_return(ret.sn, ret.rq, ret.ret);
         }
     }
@@ -215,8 +217,3 @@
 int event_removepoll(EventHandler *ev, SYS_NETFD fd) {
     return ((IOStream*)fd)->poll(fd, ev, IO_POLL_NONE, NULL);
 }
-
-
-void ev_saf_return(EventHandler *h, Session *sn, Request *rq, int ret) {
-    h->fnreturn[h->numret++] = (EVReturn){ sn, rq, ret };
-}

mercurial