Struct fizyr_rpc::SentRequestHandle
source · pub struct SentRequestHandle<Body> { /* private fields */ }
Expand description
A handle for a sent request.
The handle can be used to receive updates and the response from the remote peer, and to send update messages to the remote peer.
Implementations§
source§impl<Body> SentRequestHandle<Body>
impl<Body> SentRequestHandle<Body>
sourcepub fn request_id(&self) -> u32
pub fn request_id(&self) -> u32
Get the request ID of the sent request.
sourcepub fn service_id(&self) -> i32
pub fn service_id(&self) -> i32
Get the service ID of the initial request message.
sourcepub fn write_handle(&self) -> SentRequestWriteHandle<Body>
pub fn write_handle(&self) -> SentRequestWriteHandle<Body>
Create a write handle for this request.
The write handle can be cloned and used even while this handle is mutably borrowed.
sourcepub async fn recv_update(&mut self) -> Option<Message<Body>>
pub async fn recv_update(&mut self) -> Option<Message<Body>>
Receive the next update message of the request from the remote peer.
This function returns None
if the final response is received instead of an update message.
If that happens, the response message can be read using Self::recv_response
.
sourcepub async fn recv_response(&mut self) -> Result<Message<Body>, Error>
pub async fn recv_response(&mut self) -> Result<Message<Body>, Error>
Receive the final response of the request from the remote peer.
This function returns an error if the received message is an update message.
You can detect this situation using Error::is_unexpected_message_type()
.
Afterwards, the update message can be read using Self::recv_update
.
To ensure that there are no update messages left, keep calling Self::recv_update
untill it returns Ok(None)
.