[−][src]Trait essrpc::ClientTransport
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.
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>
&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>
&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>,
T: Deserialize<'de>,
Read the return value of a method call. Always called after
tx_finalize
. state
is the object returned by
tx_finalize
.
Implementors
impl<C: Read + Write> ClientTransport for BincodeTransport<C>
[src]
type TXState = ()
type FinalState = ()
fn tx_begin_call(&mut self, method: MethodId) -> Result<(), RPCError>
[src]
fn tx_add_param(
&mut self,
_name: &'static str,
value: impl Serialize,
_state: &mut ()
) -> Result<(), RPCError>
[src]
&mut self,
_name: &'static str,
value: impl Serialize,
_state: &mut ()
) -> Result<(), RPCError>
fn tx_finalize(&mut self, _state: ()) -> Result<(), RPCError>
[src]
fn rx_response<T>(&mut self, _state: ()) -> Result<T, RPCError> where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,
impl<C: Read + Write> ClientTransport for JSONTransport<C>
[src]
type TXState = JTXState
type FinalState = ()
fn tx_begin_call(&mut self, method: MethodId) -> Result<JTXState, RPCError>
[src]
fn tx_add_param(
&mut self,
name: &'static str,
value: impl Serialize,
state: &mut JTXState
) -> Result<(), RPCError>
[src]
&mut self,
name: &'static str,
value: impl Serialize,
state: &mut JTXState
) -> Result<(), RPCError>
fn tx_finalize(&mut self, state: JTXState) -> Result<(), RPCError>
[src]
fn rx_response<T>(&mut self, _state: ()) -> Result<T, RPCError> where
T: Deserialize<'de>,
[src]
T: Deserialize<'de>,