Skip to main content

RequestSender

Struct RequestSender 

Source
pub struct RequestSender<Req> { /* private fields */ }
Expand description

A handle for sending outbound request items over a streaming RPC.

Typically, you receive a RequestSender as the result of initiating a streaming RPC. Outbound messages are buffered and sent asynchronously to the server. The buffer size defaults to 16 and can be configured via RequestOptionsBuilder::with_request_stream_channel_capacity.

RequestSender is cheaply cloneable. Sending from multiple clones concurrently may interleave messages; if delivery order is important, send messages sequentially. The outbound request stream is closed once all clones of the RequestSender are dropped.

§Examples

sender.send("message 1".to_string()).await?;
sender.send("message 2".to_string()).await?;
drop(sender); // Close outbound request stream

Implementations§

Source§

impl<Req> RequestSender<Req>

Source

pub async fn send(&self, item: Req) -> Result<(), SendError>

Sends a request item over the stream.

If the internal request buffer is full, this method awaits asynchronously until capacity is available. The buffer size defaults to 16 and can be configured via RequestOptionsBuilder::with_request_stream_channel_capacity.

§Errors
§Examples
sender.send("hello".to_string()).await?;

Trait Implementations§

Source§

impl<Req: Clone> Clone for RequestSender<Req>

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<Req> Debug for RequestSender<Req>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<Req> From<Sender<Req>> for RequestSender<Req>
where Req: Send + 'static,

Creates a RequestSender from a Tokio mpsc::Sender, useful for mocking in tests.

§Examples

let (tx, mut rx) = mpsc::channel::<String>(16);
let sender = RequestSender::from(tx);
Source§

fn from(req_tx: Sender<Req>) -> RequestSender<Req>

Converts to this type from the input type.

Auto Trait Implementations§

§

impl<Req> !RefUnwindSafe for RequestSender<Req>

§

impl<Req> !UnwindSafe for RequestSender<Req>

§

impl<Req> Freeze for RequestSender<Req>
where Arc<dyn Fn(Req) -> Pin<Box<dyn Future<Output = Result<(), SendError>> + Send>> + Send + Sync>: Freeze,

§

impl<Req> Send for RequestSender<Req>
where Arc<dyn Fn(Req) -> Pin<Box<dyn Future<Output = Result<(), SendError>> + Send>> + Send + Sync>: Send,

§

impl<Req> Sync for RequestSender<Req>
where Arc<dyn Fn(Req) -> Pin<Box<dyn Future<Output = Result<(), SendError>> + Send>> + Send + Sync>: Sync,

§

impl<Req> Unpin for RequestSender<Req>
where Arc<dyn Fn(Req) -> Pin<Box<dyn Future<Output = Result<(), SendError>> + Send>> + Send + Sync>: Unpin,

§

impl<Req> UnsafeUnpin for RequestSender<Req>
where Arc<dyn Fn(Req) -> Pin<Box<dyn Future<Output = Result<(), SendError>> + Send>> + Send + Sync>: UnsafeUnpin,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.