]> xenbits.xensource.com Git - xenclient/toolstack.git/commitdiff
[async_conn] remove recv watch and re-use watch from eventloop
authorPrashanth Mundkur <prashanth.mundkur@citrix.com>
Tue, 30 Jun 2009 22:53:24 +0000 (15:53 -0700)
committerPrashanth Mundkur <prashanth.mundkur@citrix.com>
Tue, 30 Jun 2009 22:53:24 +0000 (15:53 -0700)
common/async_conn.ml

index 80157bc1895115e1ac18fc016fd33d60b3f9e748..2570beb839ad42108094649624504b4bf6f5b668 100644 (file)
@@ -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