module type S = sig ... end
val is_closed : t -> bool
val bytes_to_write : t -> int
Becomes determined when it is no longer possible to send message using this writer, for instance when the writer is closed or the consumer leaves.
The result of this function is cached by
flushed t returns a deferred that must become determined when all prior sent messages are delivered.
It must be OK to call
flushed t after
t has been closed.
ready_to_write t becomes determined when it is a good time to send messages again. Async RPC calls this function after sending a batch of messages, to avoid flooding the transport.
let ready_to_write = flushed is an acceptable implementation.
All the following functions send exactly one message.
They must raise once the writer is closed.
val send_bin_prot_and_bigstring_non_copying : t -> 'a Core_kernel.Bin_prot.Type_class.writer -> 'a -> buf:Core_kernel.Bigstring.t -> pos:int -> len:int -> unit Async_kernel.Deferred.t Async_rpc_kernel__.Transport_intf.Send_result.t
send_bin_prot_and_bigstring but the bigstring can't be modified until the returned deferred becomes determined. This can be used to avoid copying the bigstring.
val can_send : t -> bool
can_send t = not (is_closed t || Deferred.is_determined (stopped t))