Time HTTP requests
authorAdam Dickmeiss <adam@indexdata.dk>
Tue, 28 May 2013 12:08:05 +0000 (14:08 +0200)
committerAdam Dickmeiss <adam@indexdata.dk>
Tue, 28 May 2013 12:08:05 +0000 (14:08 +0200)
src/http.c
src/http.h

index 8dc082d..2720c3c 100644 (file)
@@ -839,6 +839,10 @@ void http_send_response(struct http_channel *ch)
     struct http_response *rs = ch->response;
     struct http_buf *hb;
 
+    yaz_timing_stop(ch->yt);
+    yaz_log(YLOG_LOG, "Response: %6.5f %3.2f %3.2f",
+            yaz_timing_get_real(ch->yt), yaz_timing_get_user(ch->yt),
+            yaz_timing_get_sys(ch->yt));
     assert(rs);
     hb = http_serialize_response(ch, rs);
     if (!hb)
@@ -934,6 +938,7 @@ static void http_io(IOCHAN i, int event)
                     fflush(hc->http_server->record_file);
                 }
  #endif
+                yaz_timing_start(hc->yt);
                 if (!(hc->request = http_parse_request(hc, &hc->iqueue, reqlen)))
                 {
                     yaz_log(YLOG_WARN, "Failed to parse request");
@@ -1121,6 +1126,7 @@ static void http_channel_destroy(IOCHAN i)
         http_buf_destroy_queue(s->http_server, s->proxy->oqueue);
         xfree(s->proxy);
     }
+    yaz_timing_destroy(&s->yt);
     http_buf_destroy_queue(s->http_server, s->iqueue);
     http_buf_destroy_queue(s->http_server, s->oqueue);
     http_fire_observers(s);
@@ -1168,6 +1174,7 @@ static struct http_channel *http_channel_create(http_server_t hs,
     }
     strcpy(r->addr, addr);
     r->observers = 0;
+    r->yt = yaz_timing_create();
     return r;
 }
 
index 1b1ae10..15a5e51 100644 (file)
@@ -21,6 +21,7 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 #define HTTP_H
 
 #include <yaz/wrbuf.h>
+#include <yaz/timing.h>
 
 #include "eventl.h"
 // Generic I/O buffer
@@ -45,6 +46,7 @@ struct http_channel
     int keep_alive;
     NMEM nmem;
     WRBUF wrbuf;
+    yaz_timing_t yt;
     struct http_request *request;
     struct http_response *response;
     struct http_channel *next; // for freelist