package obus
Module OBus_transportSource
Low-level transporting of messages
Type of message transport
recv tr receives one message from the given transport
send tr msg sends msg over the transport tr.
Returns the capabilities of the transport
Source
val make :
?switch:Lwt_switch.t ->
recv:(unit -> OBus_message.t Lwt.t) ->
send:(OBus_message.t -> unit Lwt.t) ->
?capabilities:OBus_auth.capability list ->
shutdown:(unit -> unit Lwt.t) ->
unit ->
tmake ?switch ~recv ~send ~support_unxi_fd ~shutdown () creates a new transport from the given functions.
Notes:
- message reading/writing are serialized by obus, so there is no need to handle concurrent access to transport
Loopback transport, each message sent is received on the same transport
Source
val socket :
?switch:Lwt_switch.t ->
?capabilities:OBus_auth.capability list ->
Lwt_unix.file_descr ->
tsocket ?switch ?capabilities socket creates a socket transport.
Source
val of_addresses :
?switch:Lwt_switch.t ->
?capabilities:OBus_auth.capability list ->
?mechanisms:OBus_auth.Client.mechanism list ->
OBus_address.t list ->
(OBus_address.guid * t) Lwt.tof_addresses ?switch ?capabilities ?mechanisms addresses tries to:
- connect to the server using one of the given given addresses,
- authenticate itself to the server using
mechanisms, which defaults toOBus_auth.Client.default_mechanisms, - negotiates
capabilities, which defaults toOBus_auth.capabilities
If all succeeded, it returns the server address guid and the newly created transport, which is ready to send and receive messages.
Note about errors:
- if one of the addresses is not valid, or
addresses = [], it raisesInvalid_argument, - if all connections failed, it raises the exception raised by the try on first address, which is either a
Failureor aUnix.Unix_error - if the authentication failed, a
OBus_auth.Auth_erroris raised