[][src]Trait essrpc::ClientTransport

pub trait ClientTransport {
    type TXState;
    type FinalState;
    fn tx_begin_call(
        &mut self,
        method: MethodId
    ) -> Result<Self::TXState, RPCError>;
fn tx_add_param(
        &mut self,
        name: &'static str,
        value: impl Serialize,
        state: &mut Self::TXState
    ) -> Result<(), RPCError>;
fn tx_finalize(
        &mut self,
        state: Self::TXState
    ) -> Result<Self::FinalState, RPCError>;
fn rx_response<T>(&mut self, state: Self::FinalState) -> Result<T, RPCError>
    where
        T: Deserialize<'de>
; }

Trait for RPC transport (client). ESSRPC attempts to make as few assumptions about the transport as possible. A transport may work across a network, via any IPC mechanism, or purely in memory within a single process. Often, you will implement both ClientTransport and ServerTransport on the same type, but it is permitted for the implementations to be on separate types. Obviously, they must be compatible.

Associated Types

type TXState

Type of transport-internal state used when bulding a call for transmission on the client. May be unit if the transport does not need to track state or does so through member variables.

type FinalState

Type of state object returned from tx_finalize and consumed by rx_response. May be unit.

Loading content...

Required methods

fn tx_begin_call(&mut self, method: MethodId) -> Result<Self::TXState, RPCError>

Begin calling the given method. The transport may begin transmitting over the wire, or it may may wait until the call to tx_finalize.

fn tx_add_param(
    &mut self,
    name: &'static str,
    value: impl Serialize,
    state: &mut Self::TXState
) -> Result<(), RPCError>

Add a parameter to a method call started with tx_begin_call. This method is guaranteed to be called only after tx_begin_call and to be called appropriately for each parameter of the method passed to tx_begin_call. state is the object returned by tx_begin_call. Parameters are always added and read in order, so transmitting the name is not a requirement.

fn tx_finalize(
    &mut self,
    state: Self::TXState
) -> Result<Self::FinalState, RPCError>

Finalize transmission of a method call. Called only after tx_begin_call and appropriate calls to tx_add_param. If the transport has not yet transmitted the method identifier and parameters over the wire, it should do so at this time.

fn rx_response<T>(&mut self, state: Self::FinalState) -> Result<T, RPCError> where
    T: Deserialize<'de>, 

Read the return value of a method call. Always called after tx_finalize. state is the object returned by tx_finalize.

Loading content...

Implementors

impl<C: Read + Write> ClientTransport for BincodeTransport<C>[src]

type TXState = ()

type FinalState = ()

impl<C: Read + Write> ClientTransport for JSONTransport<C>[src]

type TXState = JTXState

type FinalState = ()

Loading content...