pub struct IbvBackend(pub ActorHandle<IbvManagerActor>);Expand description
Wrapper around ActorHandle<IbvManagerActor> that moves the RDMA
data-plane (post send/recv, poll CQ) off the actor loop while keeping
state-mutating operations (MR registration/deregistration, QP management)
serialized through actor messages.
Tuple Fields§
§0: ActorHandle<IbvManagerActor>Methods from Deref<Target = ActorHandle<IbvManagerActor>>§
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 IbvBackend
impl Clone for IbvBackend
Source§fn clone(&self) -> IbvBackend
fn clone(&self) -> IbvBackend
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for IbvBackend
impl Debug for IbvBackend
Source§impl Deref for IbvBackend
impl Deref for IbvBackend
Source§type Target = ActorHandle<IbvManagerActor>
type Target = ActorHandle<IbvManagerActor>
The resulting type after dereferencing.
Source§impl RdmaBackend for IbvBackend
impl RdmaBackend for IbvBackend
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<(), Error>> + 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<(), Error>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Submit a batch of RDMA operations.
Resolves ibv ops, then executes each directly — registering/deregistering MRs via actor messages, while performing QP put/get and CQ polling locally.
Source§type TransportInfo = ()
type TransportInfo = ()
Backend-specific transport details (e.g., a cffi struct with raw
ibverbs handles for GPU-initiated RDMA).
Source§fn transport_level(&self) -> RdmaTransportLevel
fn transport_level(&self) -> RdmaTransportLevel
The transport level provided by this backend.
Source§fn transport_info(&self) -> Option<Self::TransportInfo>
fn transport_info(&self) -> Option<Self::TransportInfo>
Low-level backend-specific transport details for direct control
over RDMA operations (e.g., from a GPU kernel).
Auto Trait Implementations§
impl Freeze for IbvBackend
impl !RefUnwindSafe for IbvBackend
impl Send for IbvBackend
impl Sync for IbvBackend
impl Unpin for IbvBackend
impl !UnwindSafe for IbvBackend
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
Mutably borrows from an owned value. Read more
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>
Converts
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>
Converts
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>
Wrap the input message
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>,
Applies the layer to a service and wraps it in [
Layered].