pub struct DebugSessionRegistry { /* private fields */ }Expand description
Registry for managing debug sessions.
§Thread Safety
DebugSessionRegistry is not internally synchronized. All mutating methods
(register, register_with_tags, complete, tag, remove, register_imported*)
take &mut self, so concurrent callers must wrap the registry in an external
Arc<Mutex<_>> or Arc<RwLock<_>>. The read-only methods (get_session,
list_sessions*, tags_for, size) take &self and may run concurrently
under an RwLock read guard.
§Re-entrancy contract
SessionCompletionListeners are invoked from within complete() while the
caller still holds any external lock guarding the registry. Listeners must
not call back into the same registry — doing so would deadlock under a
Mutex and panic under a RwLock write guard. If a listener needs to
observe the registry, it should copy what it needs from the borrowed
&DebugSession and defer any registry calls until after its caller has
released the lock.
Implementations§
Source§impl DebugSessionRegistry
impl DebugSessionRegistry
Sourcepub fn with_options(
max_sessions: usize,
event_store_factory: Option<EventStoreFactory>,
completion_listeners: Vec<SessionCompletionListener>,
) -> Self
pub fn with_options( max_sessions: usize, event_store_factory: Option<EventStoreFactory>, completion_listeners: Vec<SessionCompletionListener>, ) -> Self
Creates a registry with custom options.
Sourcepub fn register(
&mut self,
session_id: String,
net: &PetriNet,
) -> Arc<DebugEventStore>
pub fn register( &mut self, session_id: String, net: &PetriNet, ) -> Arc<DebugEventStore>
Registers a new debug session for the given Petri net.
Registers a new debug session with user-defined tags. (libpetri 1.6.0+)
Tags are arbitrary HashMap<String,String> attributes attached to the session
(e.g., channel=voice, env=staging). They can be used to filter via
list_sessions_tagged.
Sourcepub fn complete(&mut self, session_id: &str)
pub fn complete(&mut self, session_id: &str)
Marks a session as completed and stamps end_time on first completion.
Idempotent: subsequent calls preserve the existing end_time. (libpetri 1.6.0+)
Sourcepub fn remove(&mut self, session_id: &str) -> Option<DebugSession>
pub fn remove(&mut self, session_id: &str) -> Option<DebugSession>
Removes a session from the registry. Tags die with the session.
Sourcepub fn tag(&mut self, session_id: &str, key: String, value: String)
pub fn tag(&mut self, session_id: &str, key: String, value: String)
Sets or overwrites a single tag on a session. (libpetri 1.6.0+)
If session_id does not correspond to a currently-registered session the
call is a no-op.
Returns a clone of the tags attached to a session.
Returns an empty map if the session has no tags or does not exist. (libpetri 1.6.0+)
Sourcepub fn get_session(&self, session_id: &str) -> Option<&DebugSession>
pub fn get_session(&self, session_id: &str) -> Option<&DebugSession>
Returns a reference to a session by ID.
Sourcepub fn list_sessions(&self, limit: usize) -> Vec<&DebugSession>
pub fn list_sessions(&self, limit: usize) -> Vec<&DebugSession>
Lists sessions, ordered by start time (most recent first).
Sourcepub fn list_sessions_tagged(
&self,
limit: usize,
tag_filter: &HashMap<String, String>,
) -> Vec<&DebugSession>
pub fn list_sessions_tagged( &self, limit: usize, tag_filter: &HashMap<String, String>, ) -> Vec<&DebugSession>
Lists sessions matching the given tag filter (AND semantics).
An empty filter matches all sessions. (libpetri 1.6.0+)
Sourcepub fn list_active_sessions(&self, limit: usize) -> Vec<&DebugSession>
pub fn list_active_sessions(&self, limit: usize) -> Vec<&DebugSession>
Lists only active sessions.
Sourcepub fn list_active_sessions_tagged(
&self,
limit: usize,
tag_filter: &HashMap<String, String>,
) -> Vec<&DebugSession>
pub fn list_active_sessions_tagged( &self, limit: usize, tag_filter: &HashMap<String, String>, ) -> Vec<&DebugSession>
Lists active sessions matching the given tag filter. (libpetri 1.6.0+)
Sourcepub fn register_imported(
&mut self,
session_id: String,
net_name: String,
dot_diagram: String,
structure: NetStructure,
event_store: Arc<DebugEventStore>,
start_time: u64,
)
pub fn register_imported( &mut self, session_id: String, net_name: String, dot_diagram: String, structure: NetStructure, event_store: Arc<DebugEventStore>, start_time: u64, )
Registers an imported (archived) session as inactive.
Sourcepub fn register_imported_with_metadata(
&mut self,
session_id: String,
net_name: String,
dot_diagram: String,
structure: NetStructure,
event_store: Arc<DebugEventStore>,
start_time: u64,
end_time: Option<u64>,
tags: HashMap<String, String>,
)
pub fn register_imported_with_metadata( &mut self, session_id: String, net_name: String, dot_diagram: String, structure: NetStructure, event_store: Arc<DebugEventStore>, start_time: u64, end_time: Option<u64>, tags: HashMap<String, String>, )
Registers an imported (archived) session with end_time and tags. (libpetri 1.6.0+)