From: Prashanth Mundkur Date: Tue, 30 Jun 2009 22:53:24 +0000 (-0700) Subject: [async_conn] remove recv watch and re-use watch from eventloop X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=e636770019077a69448093bf0b08ded446747cf7;p=xenclient%2Ftoolstack.git [async_conn] remove recv watch and re-use watch from eventloop --- diff --git a/common/async_conn.ml b/common/async_conn.ml index 80157bc..2570beb 100644 --- a/common/async_conn.ml +++ b/common/async_conn.ml @@ -27,7 +27,6 @@ type t = mutable callbacks : callbacks; mutable send_done_enabled : bool; - mutable recv_enabled : bool; send_buf : Buffer.t; } @@ -55,26 +54,23 @@ let connect_callback el h = let recv_ready_callback el h fd = let conn = Conns.get_conn h in - if conn.recv_enabled then - let buflen = 512 in - let buf = String.create buflen in - try - let read_bytes = Unix.read fd buf 0 buflen in - if read_bytes = 0 then - conn.callbacks.shutdown_callback conn - else begin - dbg "<- %s" (String.sub buf 0 read_bytes); - conn.callbacks.recv_callback conn buf 0 read_bytes - end - with - | Unix.Unix_error (Unix.EWOULDBLOCK, _, _) - | Unix.Unix_error (Unix.EAGAIN, _, _) - | Unix.Unix_error (Unix.EINTR, _, _) -> - () - | Unix.Unix_error (ec, f, s) -> - conn.callbacks.error_callback conn (ec, f, s) - else - Eventloop.disable_recv conn.ev_loop conn.ev_handle + let buflen = 512 in + let buf = String.create buflen in + try + let read_bytes = Unix.read fd buf 0 buflen in + if read_bytes = 0 then + conn.callbacks.shutdown_callback conn + else begin + dbg "<- %s" (String.sub buf 0 read_bytes); + conn.callbacks.recv_callback conn buf 0 read_bytes + end + with + | Unix.Unix_error (Unix.EWOULDBLOCK, _, _) + | Unix.Unix_error (Unix.EAGAIN, _, _) + | Unix.Unix_error (Unix.EINTR, _, _) -> + () + | Unix.Unix_error (ec, f, s) -> + conn.callbacks.error_callback conn (ec, f, s) let send_ready_callback el h fd = let conn = Conns.get_conn h in @@ -127,7 +123,6 @@ let attach ev_loop fd ?(enable_send_done=false) ?(enable_recv=true) callbacks = ev_fd = fd; callbacks = callbacks; send_done_enabled = enable_send_done; - recv_enabled = enable_recv; send_buf = Buffer.create 16; } in