Struct RdmaManagerActor

Source
pub struct RdmaManagerActor { /* private fields */ }

Trait Implementations§

Source§

impl Actor for RdmaManagerActor

Source§

type Params = Option<IbverbsConfig>

The type of initialization parameters accepted by this actor.
Source§

fn new<'async_trait>( params: Self::Params, ) -> Pin<Box<dyn Future<Output = Result<Self, Error>> + Send + 'async_trait>>
where Self: 'async_trait,

Creates a new actor instance given its instantiation parameters.
Source§

fn init<'life0, 'life1, 'async_trait>( &'life0 mut self, _this: &'life1 Instance<Self>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Initialize the actor, after the runtime has been fully initialized. Init thus provides a mechanism by which an actor can reliably and always receive some initial event that can be used to kick off further (potentially delayed) processing.
Source§

fn handle_supervision_event<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, _cx: &'life1 Instance<Self>, _event: &'life2 ActorSupervisionEvent, ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait,

Handle actor supervision event. Return `Ok(true)`` if the event is handled here.
Source§

fn cleanup<'life0, 'life1, 'life2, 'async_trait>( &'life0 mut self, _this: &'life1 Instance<Self>, _err: Option<&'life2 ActorError>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, Self: 'async_trait,

Cleanup things used by this actor before shutting down. Notably this function is async and allows more complex cleanup. Simpler cleanup can be handled by the impl Drop for this Actor. If err is not None, it is the error that this actor is failing with. Any errors returned by this function will be logged and ignored. If err is None, any errors returned by this function will be propagated as an ActorError. This function is not called if there is a panic in the actor, as the actor may be in an indeterminate state. It is also not called if the process is killed, there is no atexit handler or signal handler.
Source§

fn spawn<'life0, 'async_trait>( cx: &'life0 (impl Actor + 'async_trait), params: Self::Params, ) -> Pin<Box<dyn Future<Output = Result<ActorHandle<Self>, Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, Self: 'async_trait,

Spawn a child actor, given a spawning capability (usually given by Instance). The spawned actor will be supervised by the parent (spawning) actor.
Source§

fn spawn_detached<'async_trait>( params: Self::Params, ) -> Pin<Box<dyn Future<Output = Result<ActorHandle<Self>, Error>> + Send + 'async_trait>>
where Self: 'async_trait,

Spawns this actor in a detached state, handling its messages in a background task. The returned handle is used to control the actor’s lifecycle and to interact with it. Read more
Source§

fn spawn_server_task<F>(future: F) -> JoinHandle<<F as Future>::Output>
where F: Future + Send + 'static, <F as Future>::Output: Send + 'static,

This method is used by the runtime to spawn the actor server. It can be used by actors that require customized runtime setups (e.g., dedicated actor threads), or want to use a custom tokio runtime.
Source§

fn handle_undeliverable_message<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Instance<Self>, envelope: Undeliverable<MessageEnvelope>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, Self: 'async_trait,

Default undeliverable message handling behavior.
Source§

fn display_name(&self) -> Option<String>

If overridden, we will use this name in place of the ActorId for talking about this actor in supervision error messages.
Source§

impl Binds<RdmaManagerActor> for RdmaManagerActor

Source§

fn bind(ports: &Ports<Self>)

Bind ports in this actor.
Source§

impl Debug for RdmaManagerActor

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for RdmaManagerActor

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

impl Handler<RdmaManagerMessage> for RdmaManagerActor

Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, Self>, message: RdmaManagerMessage, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Handle the next M-typed message.
Source§

impl Named for RdmaManagerActor

Source§

fn typename() -> &'static str

The globally unique type name for the type. This should typically be the fully qualified Rust name of the type.
Source§

fn typehash() -> u64

A globally unique hash for this type. TODO: actually enforce perfect hashing
Source§

fn typeid() -> TypeId

The TypeId for this type. TypeIds are unique only within a binary, and should not be used for global identification.
Source§

fn port() -> u64

The globally unique port for this type. Typed ports are in the range of 1<<63..1<<64-1.
Source§

fn arm(&self) -> Option<&'static str>

If the named type is an enum, this returns the name of the arm of the value self.
Source§

unsafe fn arm_unchecked(self_: *const ()) -> Option<&'static str>

An unsafe version of ‘arm’, accepting a pointer to the value, for use in type-erased settings.
Source§

impl RdmaManagerMessageHandler for RdmaManagerActor

Source§

fn request_buffer<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, Self>, addr: usize, size: usize, ) -> Pin<Box<dyn Future<Output = Result<RdmaBuffer, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Requests a buffer to be registered with the RDMA domain.

This function registers a memory region with the RDMA domain and returns an RdmaBuffer that encapsulates the necessary information for RDMA operations.

§Arguments
  • this - The context of the actor requesting the buffer.
  • addr - The starting address of the memory region to be registered.
  • size - The size of the memory region to be registered.
§Returns
  • Result<RdmaBuffer, anyhow::Error> - On success, returns an RdmaBuffer containing the registered memory region’s details. On failure, returns an error.
Source§

fn release_buffer<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, Self>, buffer: RdmaBuffer, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Deregisters a buffer from the RDMA domain.

This function removes the specified RdmaBuffer from the RDMA domain, effectively releasing the resources associated with it.

§Arguments
  • _this - The context of the actor releasing the buffer.
  • buffer - The RdmaBuffer to be deregistered.
§Returns
  • Result<(), anyhow::Error> - On success, returns Ok(()). On failure, returns an error.
Source§

fn request_queue_pair<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, Self>, other: ActorRef<RdmaManagerActor>, self_device: String, other_device: String, ) -> Pin<Box<dyn Future<Output = Result<RdmaQueuePair, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Requests a queue pair for communication with a remote RDMA manager actor.

Basic logic: if queue pair exists in map, return it; if None, create connection first.

§Arguments
  • cx - The context of the actor requesting the queue pair.
  • remote - The ActorRef of the remote RDMA manager actor to communicate with.
§Returns
  • Result<RdmaQueuePair, anyhow::Error> - On success, returns the queue pair for communication. On failure, returns an error.
Source§

fn connect<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, Self>, other: ActorRef<RdmaManagerActor>, self_device: String, other_device: String, endpoint: RdmaQpInfo, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Establishes a connection with another actor

§Arguments
  • other - The ActorRef of the actor to connect to
  • endpoint - Connection information needed to establish the RDMA connection
Source§

fn connection_info<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, Self>, other: ActorRef<RdmaManagerActor>, self_device: String, other_device: String, ) -> Pin<Box<dyn Future<Output = Result<RdmaQpInfo, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets connection information for establishing an RDMA connection

§Arguments
  • other - The ActorRef to get connection info for
§Returns
  • RdmaQpInfo - Connection information needed for the RDMA connection
Source§

fn release_queue_pair<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, Self>, _other: ActorRef<RdmaManagerActor>, _self_device: String, _other_device: String, _qp: RdmaQueuePair, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Releases a queue pair back to the HashMap

This method is now a no-op since RdmaQueuePair is Clone and can be safely shared. The queue pair is not actually checked out, so there’s nothing to release. This method is kept for API compatibility.

§Arguments
  • remote - The ActorRef of the remote actor to return the queue pair for
  • qp - The queue pair to release (ignored)
Source§

fn get_qp_state<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, Self>, other: ActorRef<RdmaManagerActor>, self_device: String, other_device: String, ) -> Pin<Box<dyn Future<Output = Result<u32, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Gets the state of a queue pair

§Arguments
  • other - The ActorRef to get the QP state for
  • self_device - Local device name
  • other_device - Remote device name
§Returns
  • u32 - The QP state (e.g., IBV_QPS_RTS = Ready To Send)
Source§

fn initialize_qp<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, Self>, other: ActorRef<RdmaManagerActor>, self_device: String, other_device: String, ) -> Pin<Box<dyn Future<Output = Result<bool, Error>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

The generated handler method for this enum variant.
Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, Self>, message: RdmaManagerMessage, ) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Handle the next message.
Source§

impl Referable for RdmaManagerActor

Source§

impl RemoteHandles<RdmaManagerMessage> for RdmaManagerActor

Source§

impl RemoteHandles<Signal> for RdmaManagerActor

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FutureExt for T

§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<A, M> Handler<IndexedErasedUnbound<M>> for A
where A: Handler<M>, M: Castable,

Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, A>, msg: IndexedErasedUnbound<M>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, A: 'async_trait,

Handle the next M-typed message.
Source§

impl<A> Handler<Signal> for A
where A: Actor,

Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, _cx: &'life1 Context<'_, A>, _message: Signal, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, A: 'async_trait,

Handle the next M-typed message.
Source§

impl<A> Handler<Undeliverable<MessageEnvelope>> for A
where A: Actor,

Source§

fn handle<'life0, 'life1, 'async_trait>( &'life0 mut self, cx: &'life1 Context<'_, A>, message: Undeliverable<MessageEnvelope>, ) -> Pin<Box<dyn Future<Output = Result<(), Error>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, A: 'async_trait,

Handle the next M-typed message.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

impl<T> QuoteExt for T
where T: ?Sized,

§

fn push_quoted<'q, Q, S>(&mut self, _q: Q, s: S)
where Q: QuoteInto<T>, S: Into<Quotable<'q>>,

Source§

impl<A> RemotableActor for A
where A: Actor + Referable + Binds<A>, <A as Actor>::Params: RemoteMessage,

Source§

fn gspawn( proc: &Proc, name: &str, serialized_params: Vec<u8>, ) -> Pin<Box<dyn Future<Output = Result<ActorId, Error>> + Send>>

A type-erased entry point to spawn this actor. This is primarily used by hyperactor’s remote actor registration mechanism.
Source§

fn get_type_id() -> TypeId

The type ID of this actor.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
Source§

impl<M> Message for M
where M: Debug + Send + Sync + 'static,