Module Networking.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.

type t

A local Vat.

val create : ?switch:Lwt_switch.t -> ?tags:Logs.Tag.set -> ?restore:Restorer.t -> ?address:Network.Address.t -> secret_key: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 ] -> 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 -> 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 -> 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