module Responder : sig ... end
val schedule_dispatch : Connection.t -> rpc_tag:string -> version:int -> Core_kernel.Bigstring.t -> pos:int -> len:int -> handle_response: ( Core_kernel.Bigstring.t -> pos:int -> len:int -> unit Async_kernel.Deferred.t ) -> handle_error:( Core_kernel.Error.t -> unit ) -> [ `Flushed of unit Async_kernel.Deferred.t | `Connection_closed ]
This just schedules a write, so the
Bigstring.t should not be overwritten until the flushed
Deferred.t is determined.
The return value of
handle_response has the same meaning as in the function argument of
type implementation_result =
Result of callbacks passed to
Repliedmeans that the response has already been sent using one of the functions of
Delayed_response dmeans that the implementation is done using the input bigstring, but hasn't send the response yet. When
dbecomes determined it is expected that the response has been sent.
Note: it is NOT OK for an implementation to return:
Delayed_response (Responder.schedule responder buf ~pos:... ~len:...)
buf is the same bigstring as the one containing the query. This is because it would indicate that
buf can be overwritten even though it is still being used by