pub struct ReplySink<R> { /* private fields */ }Expand description
One-shot reply target for a command.
Consumed exactly once via Self::send; the closure performs the
backend-specific delivery (socket: serialize and write to the peer fd;
binder: send through a oneshot channel to the blocked transaction thread).
Implementations§
Source§impl<R> ReplySink<R>
impl<R> ReplySink<R>
Sourcepub fn new(
send: impl FnOnce(R) -> Result<(), CoreError> + Send + 'static,
) -> Self
pub fn new( send: impl FnOnce(R) -> Result<(), CoreError> + Send + 'static, ) -> Self
Wrap a delivery closure as a reply sink.
Sourcepub fn send(self, reply: R) -> Result<(), CoreError>
pub fn send(self, reply: R) -> Result<(), CoreError>
Deliver the reply, consuming the sink.
§Errors
Returns the backend’s delivery error (e.g. the peer went away); the caller may log it and drop the sink.
§Drop semantics
Dropping a ReplySink without calling Self::send loses the reply
(the closure is dropped). For a Binder backend the waiting transaction
thread observes the oneshot disconnect and errors out; the socket
backend simply never writes.
Trait Implementations§
Auto Trait Implementations§
impl<R> !RefUnwindSafe for ReplySink<R>
impl<R> !Sync for ReplySink<R>
impl<R> !UnwindSafe for ReplySink<R>
impl<R> Freeze for ReplySink<R>
impl<R> Send for ReplySink<R>
impl<R> Unpin for ReplySink<R>
impl<R> UnsafeUnpin for ReplySink<R>
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