0
@@ -51,6 +51,9 @@ VALUE server_listen_on_port(VALUE _, VALUE port)
0
+oneshot_timeout (struct ev_loop *loop, struct ev_timer *w, int revents) {;}
0
VALUE server_process_connections(VALUE _)
0
/* This function is super hacky. The libev loop is called for one iteration
0
@@ -67,30 +70,15 @@ VALUE server_process_connections(VALUE _)
0
* clients are in_use? Whatever happens here, one should make sure the
0
* 'wait' benchmark is running as quickly with Ebb as it does with mongrel.
0
- int running_clients = FALSE;
0
- for(i = 0; i < EBB_MAX_CLIENTS; i++)
0
- if(server->clients[i].open) {
0
- running_clients = TRUE;
0
- if(!running_clients) {
0
- struct timeval tv = { tv_sec: 1, tv_usec: 0 };
0
- FD_SET(server->fd, &fds);
0
- /* sit in ruby thread select for a second when there are no connections */
0
- rb_thread_select(server->fd+1, &fds, &fds, &fds, &tv);
0
- ev_loop(loop, EVLOOP_NONBLOCK);
0
+ ev_timer_init (&timeout, oneshot_timeout, 0.1, 0.);
0
+ ev_timer_start (loop, &timeout);
0
+ ev_loop(loop, EVLOOP_ONESHOT);
0
+ ev_timer_stop(loop, &timeout);
0
/* Call rb_thread_schedule() proportional to the number of rb threads running */
0
/* SO HACKY! Anyone have a better way to do this? */
0
for(i = 0; i < EBB_MAX_CLIENTS; i++)
0
if(server->clients[i].in_use)
Comments
No one has commented yet.