pub struct TrafficManager {
pub wait_graph: WaitForGraph,
pub deadlock_detection_enabled: bool,
/* private fields */
}Expand description
Manages traffic flow and capacity constraints in the warehouse
Fields§
§wait_graph: WaitForGraphv2: Wait-for graph for deadlock detection
deadlock_detection_enabled: boolv2: Whether deadlock detection is enabled
Implementations§
Source§impl TrafficManager
impl TrafficManager
pub fn new(default_edge_capacity: u32, default_node_capacity: u32) -> Self
Sourcepub fn set_deadlock_detection(&mut self, enabled: bool)
pub fn set_deadlock_detection(&mut self, enabled: bool)
Enable or disable deadlock detection
pub fn set_edge_capacity(&mut self, edge: EdgeId, capacity: u32)
pub fn set_node_capacity(&mut self, node: NodeId, capacity: u32)
pub fn can_enter_edge(&self, edge: EdgeId, robot: RobotId) -> bool
pub fn can_enter_node(&self, node: NodeId, robot: RobotId) -> bool
pub fn enter_edge(&mut self, edge: EdgeId, robot: RobotId)
pub fn leave_edge(&mut self, edge: EdgeId, robot: RobotId)
pub fn enter_node(&mut self, node: NodeId, robot: RobotId)
pub fn leave_node(&mut self, node: NodeId, robot: RobotId)
pub fn get_edge_occupancy(&self, edge: EdgeId) -> usize
pub fn get_node_occupancy(&self, node: NodeId) -> usize
pub fn robots_on_edge(&self, edge: EdgeId) -> impl Iterator<Item = RobotId> + '_
pub fn robots_at_node(&self, node: NodeId) -> impl Iterator<Item = RobotId> + '_
Sourcepub fn record_edge_wait(&mut self, robot: RobotId, edge: EdgeId)
pub fn record_edge_wait(&mut self, robot: RobotId, edge: EdgeId)
Record that a robot is waiting for an edge
Automatically determines which robots are blocking the edge.
Sourcepub fn record_node_wait(&mut self, robot: RobotId, node: NodeId)
pub fn record_node_wait(&mut self, robot: RobotId, node: NodeId)
Record that a robot is waiting for a node
Automatically determines which robots are blocking the node.
Sourcepub fn clear_wait(&mut self, robot: RobotId)
pub fn clear_wait(&mut self, robot: RobotId)
Clear a robot’s wait status (e.g., when it acquires the resource)
Sourcepub fn is_waiting(&self, robot: RobotId) -> bool
pub fn is_waiting(&self, robot: RobotId) -> bool
Check if a robot is currently waiting
Sourcepub fn check_deadlock(&self) -> Option<Vec<RobotId>>
pub fn check_deadlock(&self) -> Option<Vec<RobotId>>
Check for deadlocks in the current wait-for graph
Returns Some(cycle) if a deadlock is detected, None otherwise.
Sourcepub fn waiting_count(&self) -> usize
pub fn waiting_count(&self) -> usize
Get all robots currently waiting
Auto Trait Implementations§
impl Freeze for TrafficManager
impl RefUnwindSafe for TrafficManager
impl Send for TrafficManager
impl Sync for TrafficManager
impl Unpin for TrafficManager
impl UnwindSafe for TrafficManager
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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
Source§impl<T> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.