[][src]Struct capnp_rpc::RpcSystem

#[must_use = "futures do nothing unless polled"]pub struct RpcSystem<VatId> where
    VatId: 'static, 
{ /* fields omitted */ }

A portal to objects available on the network.

The RPC implemententation sits on top of an implementation of VatNetwork, which determines how to form connections between vats. The RPC implementation determines how to use such connections to manage object references and make method calls.

At the moment, this is all rather more general than it needs to be, because the only implementation of VatNetwork is twoparty::VatNetwork. However, eventually we will need to have more sophisticated VatNetwork implementations, in order to support level 3 features.

An RpcSystem is a Future and needs to be driven by a task executor. A common way accomplish that is to pass the RpcSystem to tokio_core::reactor::Handle::spawn().

Implementations

impl<VatId> RpcSystem<VatId>[src]

pub fn new(
    network: Box<dyn VatNetwork<VatId>>,
    bootstrap: Option<Client>
) -> RpcSystem<VatId>
[src]

Constructs a new RpcSystem with the given network and bootstrap capability.

pub fn bootstrap<T>(&mut self, vat_id: VatId) -> T where
    T: FromClientHook
[src]

Connects to the given vat and returns its bootstrap interface.

pub fn get_disconnector(&self) -> Disconnector<VatId>[src]

Returns a Disconnector future that can be run to cleanly close the connection to this RpcSystem's network. You should get the Disconnector before you spawn the RpcSystem.

Trait Implementations

impl<VatId> Future for RpcSystem<VatId> where
    VatId: 'static, 
[src]

type Output = Result<(), Error>

The type of value produced on completion.

Auto Trait Implementations

impl<VatId> !RefUnwindSafe for RpcSystem<VatId>

impl<VatId> !Send for RpcSystem<VatId>

impl<VatId> !Sync for RpcSystem<VatId>

impl<VatId> Unpin for RpcSystem<VatId>

impl<VatId> !UnwindSafe for RpcSystem<VatId>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T> FutureExt for T where
    T: Future + ?Sized
[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<F> IntoFuture for F where
    F: Future
[src]

type Output = <F as Future>::Output

🔬 This is a nightly-only experimental API. (into_future)

The output that the future will produce on completion.

type Future = F

🔬 This is a nightly-only experimental API. (into_future)

Which kind of future are we turning this into?

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<F, T, E> TryFuture for F where
    F: Future<Output = Result<T, E>> + ?Sized
[src]

type Ok = T

The type of successful values yielded by this future

type Error = E

The type of failures yielded by this future

impl<Fut> TryFutureExt for Fut where
    Fut: TryFuture + ?Sized
[src]

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.