Socket.MakeThis functor is meant to be as compatible as possible with lwt-zmq. It should be straight forward to write a functor over Async_zmq.Socket and Lwt_zmq.Socket.
The functor allows abstraction of the concurrency monad
module T : Deferred.Tval of_socket : 'a Zmq.Socket.t -> 'a tof_socket s wraps the zeromq socket s
val to_socket : 'a t -> 'a Zmq.Socket.tto_socket s extracts the raw zeromq socket from s
val to_string_hum : 'a t -> stringInternal statisitcs of the socket
val recv : 'a t -> string T.Deferred.trecv socket waits for a message on socket without blocking other concurrent threads
val send : 'a t -> string -> unit T.Deferred.tsend socket sends a message on socket without blocking other concurrent threads
val recv_all : 'a t -> string list T.Deferred.trecv_all socket waits for a multi-part message on socket without blocking other concurrent threads
val send_all : 'a t -> string list -> unit T.Deferred.tsend_all socket m sends all parts of the multi-part message m on socket without blocking other concurrent threads
val recv_msg : 'a t -> Zmq.Msg.t T.Deferred.trecv_msg socket waits for a message on socket without blocking other concurrent threads
val send_msg : 'a t -> Zmq.Msg.t -> unit T.Deferred.tsend_msg socket sends a message on socket without blocking other concurrent threads
val recv_msg_all : 'a t -> Zmq.Msg.t list T.Deferred.trecv_msg_all socket waits for a multi-part message on socket without blocking other concurrent threads
val send_msg_all : 'a t -> Zmq.Msg.t list -> unit T.Deferred.tsend_msg_all socket m sends all parts of the multi-part message m on socket without blocking other concurrent threads
val close : 'a t -> unit T.Deferred.tmodule Router : sig ... endmodule Monitor : sig ... end