Struct interchange::Requester
source · pub struct Requester<'i, Rq, Rp> { /* private fields */ }
Expand description
Requester end of a channel
For a static
Channel
or Interchange
,
the requester uses a 'static
lifetime parameter
Implementations§
source§impl<'i, Rq, Rp> Requester<'i, Rq, Rp>
impl<'i, Rq, Rp> Requester<'i, Rq, Rp>
sourcepub fn state(&self) -> State
pub fn state(&self) -> State
Current state of the channel.
Informational only!
The responder may change this state between calls, internally atomics ensure correctness.
sourcepub fn request(&mut self, request: Rq) -> Result<(), Error>
pub fn request(&mut self, request: Rq) -> Result<(), Error>
Send a request to the responder.
If efficiency is a concern, or requests need multiple steps to
construct, use request_mut
and `send_request.
If the RPC state is Idle
, this always succeeds, else calling
is a logic error and the request is returned.
sourcepub fn cancel(&mut self) -> Result<Option<Rq>, Error>
pub fn cancel(&mut self) -> Result<Option<Rq>, Error>
Attempt to cancel a request.
If the responder has not taken the request yet, this succeeds and returns the request.
If the responder has taken the request (is processing), we succeed and return None.
In other cases (Idle
or Reponsed
) there is nothing to cancel and we fail.
sourcepub fn response(&self) -> Result<&Rp, Error>
pub fn response(&self) -> Result<&Rp, Error>
If there is a response waiting, obtain a reference to it
This may be called multiple times.
sourcepub fn with_response<R>(&self, f: impl FnOnce(&Rp) -> R) -> Result<R, Error>
pub fn with_response<R>(&self, f: impl FnOnce(&Rp) -> R) -> Result<R, Error>
If there is a request waiting, perform an operation with a reference to it
This may be called multiple times.
sourcepub fn take_response(&mut self) -> Option<Rp>
pub fn take_response(&mut self) -> Option<Rp>
Look for a response. If the responder has sent a response, we return it.
This may be called only once as it move the state to Idle. If you need copies, clone the request.
source§impl<'i, Rq, Rp> Requester<'i, Rq, Rp>where
Rq: Default,
impl<'i, Rq, Rp> Requester<'i, Rq, Rp>where Rq: Default,
sourcepub fn with_request_mut<R>(
&mut self,
f: impl FnOnce(&mut Rq) -> R
) -> Result<R, Error>
pub fn with_request_mut<R>( &mut self, f: impl FnOnce(&mut Rq) -> R ) -> Result<R, Error>
Initialize a request with its default values and mutates it with f
This is usefull to build large structures in-place
sourcepub fn request_mut(&mut self) -> Result<&mut Rq, Error>
pub fn request_mut(&mut self) -> Result<&mut Rq, Error>
Initialize a request with its default values and and return a mutable reference to it
This is usefull to build large structures in-place
sourcepub fn send_request(&mut self) -> Result<(), Error>
pub fn send_request(&mut self) -> Result<(), Error>
Send a request that was already placed in the channel using request_mut
or
with_request_mut
.