Skip to main content

DebugSessionRegistry

Struct DebugSessionRegistry 

Source
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

Source

pub fn new() -> Self

Creates a new registry with default settings.

Source

pub fn with_options( max_sessions: usize, event_store_factory: Option<EventStoreFactory>, completion_listeners: Vec<SessionCompletionListener>, ) -> Self

Creates a registry with custom options.

Source

pub fn register( &mut self, session_id: String, net: &PetriNet, ) -> Arc<DebugEventStore>

Registers a new debug session for the given Petri net.

Source

pub fn register_with_tags( &mut self, session_id: String, net: &PetriNet, tags: HashMap<String, String>, ) -> Arc<DebugEventStore>

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.

Source

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+)

Source

pub fn remove(&mut self, session_id: &str) -> Option<DebugSession>

Removes a session from the registry. Tags die with the session.

Source

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.

Source

pub fn tags_for(&self, session_id: &str) -> HashMap<String, String>

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+)

Source

pub fn get_session(&self, session_id: &str) -> Option<&DebugSession>

Returns a reference to a session by ID.

Source

pub fn list_sessions(&self, limit: usize) -> Vec<&DebugSession>

Lists sessions, ordered by start time (most recent first).

Source

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+)

Source

pub fn list_active_sessions(&self, limit: usize) -> Vec<&DebugSession>

Lists only active sessions.

Source

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+)

Source

pub fn size(&self) -> usize

Total number of sessions.

Source

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.

Source

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+)

Trait Implementations§

Source§

impl Default for DebugSessionRegistry

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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, 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.