pub enum NetAction {
RunNetUntilBlocked,
CreatePacket(Option<EpochID>),
ConsumePacket(PacketID),
StartEpoch(EpochID),
FinishEpoch(EpochID),
CancelEpoch(EpochID),
CreateAndStartEpoch(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 Net state must go through these actions via Net::do_action.
This ensures all operations are tracked and produce appropriate events.
Variants§
RunNetUntilBlocked
Run automatic packet flow until no more progress can be made. Moves packets from edges to input ports and triggers input salvo conditions.
CreatePacket(Option<EpochID>)
Create a new packet, optionally inside an epoch.
If None, packet is created outside the network.
ConsumePacket(PacketID)
Remove a packet from the network entirely.
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.
CreateAndStartEpoch(NodeName, Salvo)
Manually create and start an epoch with specified packets. Bypasses the normal salvo condition triggering mechanism.
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