pub struct TcpBackend(pub ActorHandle<TcpManagerActor>);Expand description
Wrapper around ActorHandle<TcpManagerActor> that moves the TCP
data-plane (chunked reads/writes) off the actor loop while keeping
buffer resolution serialized through actor messages.
Because submit logic now runs outside the actor loop, same-process
messages no longer deadlock — the actor loop is free to handle
WriteChunk/ReadChunk messages.
Tuple Fields§
§0: ActorHandle<TcpManagerActor>Methods from Deref<Target = ActorHandle<TcpManagerActor>>§
Sourcepub fn drain_and_stop(&self, reason: &str) -> Result<(), ActorError>
pub fn drain_and_stop(&self, reason: &str) -> Result<(), ActorError>
Signal the actor to drain its current messages and then stop.
Sourcepub fn status(&self) -> Receiver<ActorStatus>
pub fn status(&self) -> Receiver<ActorStatus>
A watch that observes the lifecycle state of the actor.
Sourcepub fn send<M>(
&self,
cx: &impl Actor,
message: M,
) -> Result<(), MailboxSenderError>
pub fn send<M>( &self, cx: &impl Actor, message: M, ) -> Result<(), MailboxSenderError>
Send a message to the actor. Messages sent through the handle are always queued in process, and do not require serialization.
Sourcepub fn port<M>(&self) -> PortHandle<M>
pub fn port<M>(&self) -> PortHandle<M>
Return a port for the provided message type handled by the actor.
Trait Implementations§
Source§impl Clone for TcpBackend
impl Clone for TcpBackend
Source§fn clone(&self) -> TcpBackend
fn clone(&self) -> TcpBackend
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TcpBackend
impl Debug for TcpBackend
Source§impl Deref for TcpBackend
impl Deref for TcpBackend
Source§type Target = ActorHandle<TcpManagerActor>
type Target = ActorHandle<TcpManagerActor>
Source§impl RdmaBackend for TcpBackend
impl RdmaBackend for TcpBackend
Source§fn submit<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 (impl 'async_trait + Actor + Send + Sync),
ops: Vec<RdmaOp>,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn submit<'life0, 'life1, 'async_trait>(
&'life0 mut self,
cx: &'life1 (impl 'async_trait + Actor + Send + Sync),
ops: Vec<RdmaOp>,
timeout: Duration,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Submit a batch of RDMA operations over TCP.
Each operation’s remote buffer is resolved to its TCP backend
context, then executed directly — sending chunked write/read
messages to the remote TcpManagerActor.
Source§type TransportInfo = ()
type TransportInfo = ()
Source§fn transport_level(&self) -> RdmaTransportLevel
fn transport_level(&self) -> RdmaTransportLevel
Source§fn transport_info(&self) -> Option<Self::TransportInfo>
fn transport_info(&self) -> Option<Self::TransportInfo>
Auto Trait Implementations§
impl Freeze for TcpBackend
impl !RefUnwindSafe for TcpBackend
impl Send for TcpBackend
impl Sync for TcpBackend
impl Unpin for TcpBackend
impl !UnwindSafe for TcpBackend
Blanket Implementations§
§impl<T> AnySync for T
impl<T> AnySync for T
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<A, M> Handler<IndexedErasedUnbound<M>> for A
impl<A, M> Handler<IndexedErasedUnbound<M>> for A
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].