src/server/daemon/sessionhandler.c

branch
aio
changeset 159
9ba9f8befa80
parent 152
8b85c5face66
child 188
0e6a05c779e0
--- a/src/server/daemon/sessionhandler.c	Tue Jan 24 23:19:48 2017 +0100
+++ b/src/server/daemon/sessionhandler.c	Wed Jan 25 19:19:47 2017 +0100
@@ -40,9 +40,9 @@
 #include "httplistener.h"
 
 typedef struct _event_http_io {
-    HTTPRequest *request;
-    HttpParser  *parser;
-    int         error;
+    HTTPRequest  *request;
+    HttpParser   *parser;
+    int          error;
 } EventHttpIO;
 
 
@@ -153,7 +153,7 @@
     }
     
     // process request
-    r = handle_request(&request, NULL); // TODO: use correct thread pool
+    r = handle_request(&request, NULL, NULL); // TODO: use correct thread pool
     
     // TODO: free, see evt_request_finish
 
@@ -221,14 +221,14 @@
      * evt_enq_conn() --> event handler --> handle_request()
      */
     
-    event_handler_t *ev = ((EventSessionHandler*)handler)->eventhandler;
-    
-    event_t *event = malloc(sizeof(event_t));
-    ZERO(event, sizeof(event_t));
+    Event *event = malloc(sizeof(Event));
+    ZERO(event, sizeof(Event));
     event->fn = evt_request_input;
     event->finish = evt_request_finish;
     event->cookie = io;
     
+    EventHandler *ev = ev_instance(((EventSessionHandler*)handler)->eventhandler);
+    
     if(ev_pollin(ev, conn->fd, event) != 0) {
         // TODO: ev_pollin should log, intercept some errors here
         log_ereport(LOG_FAILURE, "Cannot enqueue connection");
@@ -237,7 +237,7 @@
     }
 }
 
-int evt_request_input(event_handler_t *handler, event_t *event) {    
+int evt_request_input(EventHandler *handler, Event *event) {    
     EventHttpIO *io = event->cookie;
     HttpParser  *parser  = io->parser;
     HTTPRequest *request = io->request;
@@ -255,11 +255,11 @@
             // SSL specific error handling
             switch(conn->ssl_error) {
                 case SSL_ERROR_WANT_READ: {
-                    event->poll = EVENT_POLLIN;
+                    event->events = EVENT_POLLIN;
                     return 1;
                 }
                 case SSL_ERROR_WANT_WRITE: {
-                    event->poll = EVENT_POLLOUT;
+                    event->events = EVENT_POLLOUT;
                     return 1;
                 }
             }
@@ -285,7 +285,7 @@
          * we need more data -> return 1 to tell the event handler to
          * continue polling
          */
-        event->poll = EVENT_POLLIN;
+        event->events = EVENT_POLLIN;
         return 1;
     }
     
@@ -312,12 +312,12 @@
     return 0;
 }
 
-int evt_request_finish(event_handler_t *h, event_t *event) { 
+int evt_request_finish(EventHandler *h, Event *event) { 
     EventHttpIO *io = event->cookie;
     HttpParser  *parser  = io->parser;
     HTTPRequest *request = io->request;
       
-    int r = handle_request(request, NULL);
+    int r = handle_request(request, NULL, h);
     if(r != 0) {
         // TODO: error message
         close(request->connection->fd);
@@ -338,7 +338,7 @@
     return 0;
 }
 
-int evt_request_error(event_handler_t *h, event_t *event) { 
+int evt_request_error(EventHandler *h, Event *event) { 
     EventHttpIO *io = event->cookie;
     HttpParser  *parser  = io->parser;
     HTTPRequest *request = io->request;

mercurial