pub struct ReadConnection<Read: ReadHalf> { /* private fields */ }
Expand description
A connection that can only be used for reading.
§Cancel safety
All async methods of this type are cancel safe unless explicitly stated otherwise in its documentation.
Implementations§
Source§impl<Read: ReadHalf> ReadConnection<Read>
impl<Read: ReadHalf> ReadConnection<Read>
Sourcepub async fn receive_reply<'r, Params, ReplyError>(
&'r mut self,
) -> Result<Result<Reply<Params>, ReplyError>>
pub async fn receive_reply<'r, Params, ReplyError>( &'r mut self, ) -> Result<Result<Reply<Params>, ReplyError>>
Receives a method call reply.
The generic parameters needs some explanation:
Params
is the type of the successful reply. This should be a type that can deserialize itself from theparameters
field of the reply.ReplyError
is the type of the error reply. This should be a type that can deserialize itself from the whole reply object itself and must fail when there is noerror
field in the object. This can be easily achieved using theserde::Deserialize
derive:
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
#[serde(tag = "error", content = "parameters")]
enum MyError {
// The name needs to be the fully-qualified name of the error.
#[serde(rename = "org.example.ftl.Alpha")]
Alpha { param1: u32, param2: String },
#[serde(rename = "org.example.ftl.Bravo")]
Bravo,
#[serde(rename = "org.example.ftl.Charlie")]
Charlie { param1: String },
}
Sourcepub async fn receive_call<'m, Method>(&'m mut self) -> Result<Call<Method>>where
Method: Deserialize<'m> + Debug,
pub async fn receive_call<'m, Method>(&'m mut self) -> Result<Call<Method>>where
Method: Deserialize<'m> + Debug,
Receive a method call over the socket.
The generic Method
is the type of the method name and its input parameters. This should be
a type that can deserialize itself from a complete method call message, i-e an object
containing method
and parameter
fields. This can be easily achieved using the
serde::Deserialize
derive (See the code snippet in super::WriteConnection::send_call
documentation for an example).
Trait Implementations§
Auto Trait Implementations§
impl<Read> Freeze for ReadConnection<Read>where
Read: Freeze,
impl<Read> RefUnwindSafe for ReadConnection<Read>where
Read: RefUnwindSafe,
impl<Read> Send for ReadConnection<Read>where
Read: Send,
impl<Read> Sync for ReadConnection<Read>where
Read: Sync,
impl<Read> Unpin for ReadConnection<Read>where
Read: Unpin,
impl<Read> UnwindSafe for ReadConnection<Read>where
Read: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more