Make.Vat
A Vat is an actor in the CapTP network, composed of objects that can call each other directly.
An actor in the CapTP network. A Vat may be connected to other Vats over CapTP network connections. Typically an application will create only a single Vat. See the Capnp_rpc_unix
module for a higher-level API.
val create :
?switch:Lwt_switch.t ->
?tags:Logs.Tag.set ->
?restore:Capnp_rpc_net.Restorer.t ->
?address:Network.Address.t ->
secret_key:Capnp_rpc_net.Auth.Secret_key.t Stdlib.Lazy.t ->
Network.t ->
t
create ~switch ~restore ~address ~secret_key network
is a new Vat that uses restore
to restore sturdy refs hosted at this vat to live capabilities for peers. The Vat will suggest that other parties connect to it using address
. Turning off the switch will disconnect any active connections.
val add_connection :
t ->
switch:Lwt_switch.t ->
mode:[ `Accept | `Connect ] ->
Capnp_rpc_net.Endpoint.t ->
CapTP.t Lwt.t
add_connection t ~switch ~mode endpoint
runs the CapTP protocol over endpoint
, which is a connection to another vat. When the connection ends, switch
will be turned off, and turning off switch
will end the connection. mode
is used if two Vats connect to each other at the same time to decide which connection to drop. Use `Connect
if t
initiated the new connection. Note that add_connection
may return an existing connection.
val public_address : t -> Network.Address.t option
public_address t
is the address that peers should use when connecting to this Vat to locate and authenticate it.
val sturdy_ref :
t ->
Capnp_rpc_net.Restorer.Id.t ->
'a Capnp_rpc_lwt.Sturdy_ref.t
sturdy_ref t service_id
is a sturdy ref for service_id
, hosted at this Vat. Fails if this Vat does not accept incoming connections.
val export : t -> 'a Capnp_rpc_lwt.Sturdy_ref.t -> Uri.t
export t sr
turns sr
into a URI, which can be displayed and imported into another Vat.
val sturdy_uri : t -> Capnp_rpc_net.Restorer.Id.t -> Uri.t
sturdy_uri t id
is sturdy_ref t id |> export t
.
val import :
t ->
Uri.t ->
('a Capnp_rpc_lwt.Sturdy_ref.t, [> `Msg of string ]) Stdlib.result
import t uri
parses uri
as a "capnp://" URI.
val import_exn : t -> Uri.t -> 'a Capnp_rpc_lwt.Sturdy_ref.t
import_exn
is a wrapper for import
that raises an exception if it fails.
val dump : t Fmt.t