pub struct Session { /* private fields */ }Expand description
A Lua execution session with domain state tracking.
Each session owns a dedicated Lua VM via _vm_driver. The VM’s OS thread
stays alive as long as the driver is held, and exits cleanly when the
session is dropped (channel closes → Lua thread drains and exits).
Implementations§
Source§impl Session
impl Session
pub fn new( llm_rx: Receiver<LlmRequest>, exec_task: AsyncTask, metrics: ExecutionMetrics, vm_driver: AsyncIsleDriver, ) -> Self
Sourcepub fn snapshot(&self, pending_filter: Option<&PendingFilter>) -> Value
pub fn snapshot(&self, pending_filter: Option<&PendingFilter>) -> Value
Lightweight snapshot for external observation (alc_status).
Returns session state label and running metrics without consuming or modifying the session.
pending_filter is opt-in projection for the currently pending
LLM queries:
None(default) → onlypending_queries: N(integer count) is emitted, preserving the v0.x wire shape for light-weight polling.Some(filter)→ adds apending: [...]array whose entries are per-query objects projected through the filter’s field flags.
The integer pending_queries field is always retained when paused
so existing consumers do not break.
Sourcepub fn is_expired(&self, ttl: Duration) -> bool
pub fn is_expired(&self, ttl: Duration) -> bool
Returns true if the session has been idle longer than ttl.
Uses saturating_duration_since to avoid panics if the clock drifts
backwards (though this is extremely rare with monotonic clocks).
Auto Trait Implementations§
impl Freeze for Session
impl !RefUnwindSafe for Session
impl Send for Session
impl Sync for Session
impl Unpin for Session
impl UnsafeUnpin for Session
impl !UnwindSafe for Session
Blanket Implementations§
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
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.