pub struct RCQueuePair { /* private fields */ }Expand description
An RDMA reliable-connected (RC) queue pair built on plain ibverbs
(ibv_post_send), independent of any device-specific verbs.
Single-owner: it owns the [IbvQp] — which in turn owns its two completion
queues and the protection domain — and destroys them on drop, so the type is
intentionally !Clone. The device context and completion queues are reached
through the [IbvQp].
Trait Implementations§
Source§impl Debug for RCQueuePair
impl Debug for RCQueuePair
Source§impl IbvQueuePair for RCQueuePair
impl IbvQueuePair for RCQueuePair
Source§unsafe fn new<I: IbvDomainImpl<QueuePair = Self>>(
domain: &IbvDomain<I>,
config: IbvConfig,
) -> Result<Self, Error>
unsafe fn new<I: IbvDomainImpl<QueuePair = Self>>( domain: &IbvDomain<I>, config: IbvConfig, ) -> Result<Self, Error>
Creates a queue pair against
domain in the RESET state;
Self::connect transitions it to RTS before use. Read moreSource§fn connect(&mut self, info: &IbvQpInfo) -> Result<(), Error>
fn connect(&mut self, info: &IbvQpInfo) -> Result<(), Error>
Transitions the QP through
INIT -> RTR -> RTS, connected to info.Source§fn get_qp_info(&mut self) -> Result<IbvQpInfo, Error>
fn get_qp_info(&mut self) -> Result<IbvQpInfo, Error>
Returns the local endpoint other peers need in order to connect to this
QP.
Source§fn put(
&mut self,
remote_dst: IbvBuffer,
local_src: IbvBuffer,
) -> Result<Vec<u64>, Error>
fn put( &mut self, remote_dst: IbvBuffer, local_src: IbvBuffer, ) -> Result<Vec<u64>, Error>
Post an RDMA WRITE of
local_src into remote_dst. The request may
be chunked into multiple WRs. This method returns the list of WR ids
that were posted.Source§fn get(
&mut self,
local_dst: IbvBuffer,
remote_src: IbvBuffer,
) -> Result<Vec<u64>, Error>
fn get( &mut self, local_dst: IbvBuffer, remote_src: IbvBuffer, ) -> Result<Vec<u64>, Error>
Post an RDMA READ of
remote_src into local_dst. The request may
be chunked into multiple WRs. This method returns the list of WR ids
that were posted.Source§fn poll_completion(
&mut self,
target: PollTarget,
) -> Result<Option<Result<IbvWc, WorkRequestError>>, PollCompletionError>
fn poll_completion( &mut self, target: PollTarget, ) -> Result<Option<Result<IbvWc, WorkRequestError>>, PollCompletionError>
Poll
target’s completion queue for a single work completion. Read moreAuto Trait Implementations§
impl Freeze for RCQueuePair
impl RefUnwindSafe for RCQueuePair
impl Send for RCQueuePair
impl Sync for RCQueuePair
impl Unpin for RCQueuePair
impl UnsafeUnpin for RCQueuePair
impl UnwindSafe for RCQueuePair
Blanket Implementations§
§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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
§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>
§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].