module Uq_multiplex:sig
..end
class type multiplex_controller =object
..end
A multiplex_controller
is a quite low-level device to abstract
bidirectional socket connections.
class type datagram_multiplex_controller =object
..end
Additional methods for unconnected datagram handling
exception Mem_not_supported
May be raised by multiplex controller methods start_mem_reading
and
start_mem_writing
if these methods are not supported for the kind
of file descriptor
val create_multiplex_controller_for_connected_socket : ?close_inactive_descr:bool ->
?preclose:(unit -> unit) ->
?supports_half_open_connection:bool ->
?timeout:float * exn ->
Unix.file_descr ->
Unixqueue.unix_event_system -> multiplex_controller
Creates a multiplex controller for a bidirectional socket (e.g. a TCP socket). It is essential that the socket is in connected state. This function also supports Win32 named pipes.
Note that the file descriptor is not closed when the attached engines
are terminated. One can call inactivate
manually to do that.
close_inactive_descr
: Whether inactivate
closes the descriptor.
True by default.
preclose
: This function is called just before the descriptor is
closed.
supports_half_open_connection
: This implementation does not know
how to find out whether the socket supports half-open connections.
You can simply set this boolean because of this. Defaults to false
.
You can set it to true
for TCP connections and for Unix-domain
connections with stream semantics.
timeout
: If set to (t, x)
, a general timeout of t
is set.
When an operation has been started, and there is no I/O activity within
t
seconds, neither by the started operation nor by another operation,
the connection times out. In this case, the operation returns the
exception x
.
val create_multiplex_controller_for_datagram_socket : ?close_inactive_descr:bool ->
?preclose:(unit -> unit) ->
?timeout:float * exn ->
Unix.file_descr ->
Unixqueue.unix_event_system -> datagram_multiplex_controller
Creates a multiplex controller for datagram sockets (e.g. UDP socket).
Note that the file descriptor is not closed when the attached engines
are terminated. One can call inactivate
manually to do that.
close_inactive_descr
: Whether inactivate
closes the descriptor.
True by default.
preclose
: This function is called just before the descriptor is
closed.
timeout
: If set to (t, x)
, a general timeout of t
is set.
When an operation has been started, and there is no I/O activity within
t
seconds, neither by the started operation nor by another operation,
the connection times out. In this case, the operation returns the
exception x
.
val tls_multiplex_controller : ?resume:string ->
?on_handshake:(multiplex_controller -> unit) ->
role:[ `Client | `Server ] ->
peer_name:string option ->
(module Netsys_crypto_types.TLS_CONFIG) ->
multiplex_controller -> multiplex_controller
Creates a new multiplex controller on top of an existing controller, and configures the new controller for running the TLS protocol.
resume
: The endpoint resumes an old session whose data are passed here.
This is only possible for client endpoints.
on_handshake
: called back when the handshake is done
val restore_tls_multiplex_controller : ?on_handshake:(multiplex_controller -> unit) ->
exn ->
(module Netsys_crypto_types.TLS_CONFIG) ->
multiplex_controller -> multiplex_controller
Like tls_multiplex_controller
, but this function does not create a new
TLS endpoint. Instead the exn value is assumed to be a stashed old
endpoint.