sig
type t
val invariant : t Core.Std.Invariant.inv
val create :
?logfun:logfun ->
?now:(unit -> Core.Std.Time.t) ->
?enforce_unique_remote_name:bool ->
?is_client_ip_authorized:(string -> bool) ->
?warn_when_free_connections_lte_pct:float ->
?max_clients:int -> listen_port:int -> My_name.t -> t Import.Deferred.t
val port : t -> int
val close : t -> Remote_name.t -> unit
val listen : t -> (Remote_name.t, Recv.t) Server_msg.t Import.Stream.t
val listen_ignore_errors :
?stop:unit Import.Deferred.t -> t -> Recv.t Import.Stream.t
val send :
t ->
Remote_name.t ->
Send.t -> [ `Dropped | `Sent of Core.Std.Time.t ] Import.Deferred.t
val send_ignore_errors : t -> Remote_name.t -> Send.t -> unit
val send_to_all :
t -> Send.t -> [ `Dropped | `Partial_success | `Sent ] Import.Deferred.t
val send_to_all_ignore_errors : t -> Send.t -> unit
val send_to_some :
t ->
Send.t ->
Remote_name.t list ->
[ `Dropped | `Partial_success | `Sent ] Import.Deferred.t
val send_to_some_ignore_errors : t -> Send.t -> Remote_name.t list -> unit
val client_send_version : t -> Remote_name.t -> Version.t option
val flushed :
t ->
cutoff:unit Import.Deferred.t ->
([ `Flushed of Remote_name.t list ] *
[ `Not_flushed of Remote_name.t list ])
Import.Deferred.t
end