Rate this Page
PortId">

PortId#

A PortId identifies a specific port on a particular actor. Ports are the entry points through which messages are delivered to an actor, and each PortId is globally unique.

#[derive(
    Debug,
    Serialize,
    Deserialize,
    Clone,
    PartialEq,
    Eq,
    PartialOrd,
    Hash,
    Ord,
    Named
)]
pub struct PortId(pub ActorId, pub u64);
  • The first field is the owning ActorId.

  • The second field is the port number (u64), typically derived from the message type’s registered port.

Construction#

use hyperactor::reference::{PortId, ActorId};

let port = PortId(actor, 42);

Or via the id! macro:

use hyperactor::id;

let port = id!(training[0].logger[1][42]);
// Equivalent to PortId(ActorId(...), 42)

You can also construct a PortId from an ActorId using .port_id(...):

let port = actor.port_id(42);

Methods#

impl PortId {
    pub fn actor_id(&self) -> &ActorId;
    pub fn index(&self) -> u64;
    pub fn into_actor_id(self) -> ActorId;
}
  • .actor_id() returns the owning actor.

  • .index() returns the port number.

  • .into_actor_id() discards the port index and yields the owning actor ID.

Traits#

PortId implements:

  • Display — formatted as world[rank].actor[pid][port]

  • FromStr — parses from strings like "training[0].logger[1][42]"

  • Ord, Eq, Hash — usable as map keys or for dispatch

  • Named — supports reflection and typed messaging