pub struct WorkerObservers {Show 13 fields
pub current_job: Arc<Mutex<Option<CurrentJob>>>,
pub active_jobs: Arc<Mutex<Vec<CurrentJob>>>,
pub thumbnails: Thumbnails,
pub recent_jobs: Arc<Mutex<VecDeque<RecentJob>>>,
pub local_jobs: Arc<Mutex<VecDeque<RecentJob>>>,
pub local_api_url: Arc<Mutex<Option<String>>>,
pub last_heartbeat: Arc<Mutex<Option<HeartbeatStatus>>>,
pub session_state: Arc<Mutex<SessionState>>,
pub gpu_runtime: Arc<Mutex<Option<GpuRuntimeStatus>>>,
pub catalog: Arc<Mutex<Catalog>>,
pub catalog_path: Arc<Mutex<Option<PathBuf>>>,
pub recent_logs: Arc<Mutex<VecDeque<LogEntry>>>,
pub recent_logs_seq: Arc<AtomicU64>,
}Expand description
Bundle of in-process observation slots the WS session writes to and
the optional native UI reads from. Default gives empty slots so
existing (headless) call sites stay one-liners. Cheap to clone —
every field is an Arc.
Fields§
§current_job: Arc<Mutex<Option<CurrentJob>>>§active_jobs: Arc<Mutex<Vec<CurrentJob>>>Every running job, whatever its source (see crate::job_run::JobRun).
thumbnails: ThumbnailsThumbnails of recent image jobs.
recent_jobs: Arc<Mutex<VecDeque<RecentJob>>>§local_jobs: Arc<Mutex<VecDeque<RecentJob>>>Finished jobs submitted to the local API (the in-app “local queue”), kept separate from studio-claimed jobs.
local_api_url: Arc<Mutex<Option<String>>>URL the always-on local image API is reachable at, once bound.
last_heartbeat: Arc<Mutex<Option<HeartbeatStatus>>>§session_state: Arc<Mutex<SessionState>>Current WS lifecycle state, so the UI can show a connecting / reconnecting / auth-failed status instead of silent nothing.
gpu_runtime: Arc<Mutex<Option<GpuRuntimeStatus>>>GPU-runtime readiness, probed once at startup. None until
probed.
catalog: Arc<Mutex<Catalog>>The local model catalog, shared between the local API (which
serves from it) and the WS session (which mirrors studio-offered
models into it). Empty until spawn_local_api loads it.
catalog_path: Arc<Mutex<Option<PathBuf>>>Where the catalog persists (None = don’t persist, e.g. an
unreadable file).
recent_logs: Arc<Mutex<VecDeque<LogEntry>>>Bounded ring of every log entry the worker has emitted, kept for the UI’s Logs tab. Separate from the WS ship queue (which is drained every second) so the display doesn’t blank out between ticks.
recent_logs_seq: Arc<AtomicU64>Entries ever pushed into recent_logs; the newest entry’s sequence
number. Written under the recent_logs lock.
Implementations§
Source§impl WorkerObservers
impl WorkerObservers
Sourcepub fn with_global_worker_log() -> Self
pub fn with_global_worker_log() -> Self
Observers whose worker log is the process-wide ring the installed
crate::job_log::WorkerLogLayer fills: the daemon’s.
Sourcepub fn worker_log(&self) -> WorkerLogRing
pub fn worker_log(&self) -> WorkerLogRing
The worker log ring, as a handle.
Trait Implementations§
Source§impl Clone for WorkerObservers
impl Clone for WorkerObservers
Auto Trait Implementations§
impl !RefUnwindSafe for WorkerObservers
impl !UnwindSafe for WorkerObservers
impl Freeze for WorkerObservers
impl Send for WorkerObservers
impl Sync for WorkerObservers
impl Unpin for WorkerObservers
impl UnsafeUnpin for WorkerObservers
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for 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 more