RdmaBackend

Trait RdmaBackend 

Source
pub trait RdmaBackend: Send + Debug {
    type TransportInfo;

    // Required methods
    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 transport_level(&self) -> RdmaTransportLevel;
    fn transport_info(&self) -> Option<Self::TransportInfo>;
}
Expand description

Backend for executing RDMA operations over a specific transport.

Each backend manages the transport-specific details of connection management and data movement. The backend decides internally how to batch and schedule submitted operations.

Current implementations:

  • [ibverbs::IbvManagerActor] – ibverbs NIC transport
  • [tcp::TcpManagerActor] – TCP fallback transport

Required Associated Types§

Source

type TransportInfo

Backend-specific transport details (e.g., a cffi struct with raw ibverbs handles for GPU-initiated RDMA).

Required Methods§

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,

Submit a batch of RDMA operations.

The backend decides internally how to batch, schedule, and execute the operations (e.g., managing QPs and connections as needed).

Source

fn transport_level(&self) -> RdmaTransportLevel

The transport level provided by this backend.

Source

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).

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§