Module Versioned_typed_tcp.Make.Client

module Client: sig .. end

type t = {
   remote_ip :Import.Unix.Inet_addr.t;
   remote_port :int;
   expected_remote_name :Remote_name.t;
   check_remote_name :bool;
   logfun :Versioned_typed_tcp.Make.logfun option;
   my_name :My_name.t;
   messages :(Remote_name.t, Recv.t) Versioned_typed_tcp.Client_msg.t Import.Tail.t;
   queue :(Send.t * [ `Dropped | `Sent of Core.Std.Time.t ] Import.Ivar.t)
Core.Std.Queue.t
;
   mutable con :[ `Connected of Versioned_typed_tcp.Make.Connection.t
| `Connecting of unit -> unit
| `Disconnected ]
;
   mutable trying_to_connect :bool;
   mutable connect_complete :unit Import.Ivar.t;
   mutable ok_to_connect :unit Import.Ivar.t;
   now :unit -> Core.Std.Time.t;
   mutable last_connect_error :exn option;
}
val connect : t -> unit Import.Ivar.Deferred.t
val listen : t ->
(Remote_name.t, Recv.t) Versioned_typed_tcp.Client_msg.t Import.Tail.Stream.t
val listen_ignore_errors : ?stop:unit Import.Deferred.t ->
t -> Recv.t Import.Stream.t
val send : t ->
Send.t -> [ `Dropped | `Sent of Core.Std.Time.t ] Import.Ivar.Deferred.t
val close_connection : t -> unit
val connect : t -> unit Import.Ivar.Deferred.t
val send_ignore_errors : t -> Send.t -> unit
val state : t ->
[> `Connected | `Connecting | `Disconnected ]
val create : ?logfun:Versioned_typed_tcp.Make.logfun ->
?now:(unit -> Core.Std.Time.t) ->
?check_remote_name:bool ->
ip:string ->
port:int ->
expected_remote_name:Remote_name.t ->
My_name.t -> t Async_core.Deferred.t
val last_connect_error : t -> exn option