Skip to main content

NetAction

Enum NetAction 

Source
pub enum NetAction {
    RunStep,
    CreatePacket(Option<EpochID>),
    ConsumePacket(PacketID),
    DestroyPacket(PacketID),
    StartEpoch(EpochID),
    FinishEpoch(EpochID),
    CancelEpoch(EpochID),
    CreateEpoch(NodeName, Salvo),
    LoadPacketIntoOutputPort(PacketID, PortName),
    SendOutputSalvo(EpochID, SalvoConditionName),
    TransportPacketToLocation(PacketID, PacketLocation),
}
Expand description

An action that can be performed on the network.

All mutations to NetSim state must go through these actions via NetSim::do_action. This ensures all operations are tracked and produce appropriate events.

Variants§

§

RunStep

Execute one step of automatic packet flow.

A single step performs one full iteration of the flow loop:

  1. Move all movable packets from edges to input ports
  2. Trigger all satisfied input salvo conditions

Returns StepResult { made_progress } indicating whether any progress was made. If no progress was made, the network is “blocked”.

§

CreatePacket(Option<EpochID>)

Create a new packet, optionally inside an epoch. If None, packet is created outside the network.

§

ConsumePacket(PacketID)

Consume a packet (normal removal from the network).

§

DestroyPacket(PacketID)

Destroy a packet (abnormal removal, e.g., due to error or cancellation).

§

StartEpoch(EpochID)

Transition a startable epoch to running state.

§

FinishEpoch(EpochID)

Complete a running epoch. Fails if epoch still contains packets.

§

CancelEpoch(EpochID)

Cancel an epoch and destroy all packets inside it.

§

CreateEpoch(NodeName, Salvo)

Manually create an epoch with specified packets. Bypasses the normal salvo condition triggering mechanism. The epoch is created in Startable state - call StartEpoch to begin execution.

§

LoadPacketIntoOutputPort(PacketID, PortName)

Move a packet from inside an epoch to one of its output ports.

§

SendOutputSalvo(EpochID, SalvoConditionName)

Send packets from output ports onto edges according to a salvo condition.

§

TransportPacketToLocation(PacketID, PacketLocation)

Transport a packet to a new location. Restrictions:

  • Cannot move packets into or out of Running epochs (only Startable allowed)
  • Input ports are checked for capacity

Trait Implementations§

Source§

impl Clone for NetAction

Source§

fn clone(&self) -> NetAction

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NetAction

Source§

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

Formats the value using the given formatter. Read more

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
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.
Source§

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

Source§

fn vzip(self) -> V