include module type of Async_extra__.Versioned_typed_tcp_intf
module type Name : sig ... end
module Version = Async_extra__.Versioned_typed_tcp_intf.Version
module type Versions : sig ... end
module type Datumable : sig ... end
This module describes the type of a given direction of message flow. For example it might describe the type of messages from the client to the server.
module type Datum : sig ... end
module type Mode : sig ... end
This module may be used to implement modes for clients/servers. A common scheme is to have two modes, Test, and Production, and to want to maintain the invariant that clients in mode Test may not talk to servers in mode Production, and that clients in mode Production may not talk to servers in mode Test. Versioned connection will check that the mode of the client is the same as the mode of the server.
module type Arg : sig ... end
module Read_result = Async_extra__.Versioned_typed_tcp_intf.Read_result
module Server_msg = Async_extra__.Versioned_typed_tcp_intf.Server_msg
The messages which the code using this library on the server side needs to process. That is, messages received from Clients or otherwise triggered by a Client connection behavior.
module Client_msg = Async_extra__.Versioned_typed_tcp_intf.Client_msg
The messages which the code using this library on the client side needs to process. That is, messages received from Server, or caused by a state change of a connection to Server.
module type S : sig ... end
module Repeater_error = Async_extra__.Versioned_typed_tcp_intf.Repeater_error
module Repeater_hook_result = Async_extra__.Versioned_typed_tcp_intf.Repeater_hook_result
val protocol_version : [ `Prod | `Test ] Core.ref
module Dont_care_about_mode : Mode
module Make : functor (Z : Arg) -> S with module To_server_msg = Z.To_server_msg and module To_client_msg = Z.To_client_msg and module Client_name = Z.Client_name and module Server_name = Z.Server_name
module Repeater : functor (To_server_msg : Datum) -> functor (To_client_msg : Datum) -> functor (Server_name : Name) -> functor (Client_name : Name) -> functor (Mode : Mode) -> sig ... end
Repeater is used in the cases where we want to inspect and possible alter the flow between a client and a server without having to change either the client or the server or the protocol between them. It is written with efficiency in mind which dictated some design decisions.
module Datumable_of_binable : sig ... end
Helpers to make your types Datumable if they are binable. Works with up to 5 versions (easily extensible to more)