pub struct AppState {
pub functions: Arc<DashMap<Uuid, FunctionRecord>>,
pub jobs: Arc<DashMap<Uuid, JobRecord>>,
pub metrics: Arc<TensorWasmMetrics>,
pub executor: Arc<TensorWasmExecutor>,
pub kernel_registry: Option<Arc<dyn KernelRegistry>>,
pub openai_model_map: ModelMap,
pub app_config: AppConfig,
}Expand description
Process-global state shared by every handler.
Arc<AppState> is cloned into the router via with_state; the inner
DashMaps sit behind their own Arc so cheap clones of the maps remain
possible across the codebase.
Fields§
§functions: Arc<DashMap<Uuid, FunctionRecord>>Deployed-function registry, keyed by id.
jobs: Arc<DashMap<Uuid, JobRecord>>Async-job registry, keyed by id.
metrics: Arc<TensorWasmMetrics>Shared metrics registry. Cloned into the executor so spawn/terminate
counters and the /metrics scrape view the same atomics.
executor: Arc<TensorWasmExecutor>Wasm executor driving the synchronous /invoke path.
kernel_registry: Option<Arc<dyn KernelRegistry>>Optional kernel registry (B6.4 / roadmap feature #3). None when
TENSOR_WASM_API_KERNEL_HMAC_KEY is unset; the /kernels routes
return 503 kernel_registry_not_configured in that case so
client tools can detect feature availability without inspecting
the URL surface. Only compiled when the kernel-registry-api
feature is enabled — the default build keeps the lean dep graph.
openai_model_map: ModelMapOpenAI model → FunctionId resolution map (T41). Read from
TENSOR_WASM_API_OPENAI_MODEL_MAP at startup; empty map means
every OpenAI request returns 404 model_not_found. See
crate::openai_translator for the env-var grammar.
app_config: AppConfigTop-level AppConfig carrying the
snapshot HMAC signing key and the require_signature toggle (M5).
Read from the environment (TENSOR_WASM_API_SNAPSHOT_HMAC_KEY /
TENSOR_WASM_API_SNAPSHOT_REQUIRE_SIGNATURE) in
build_router and threaded here so
the /snapshot/save and /snapshot/restore handlers can sign and
verify blobs with the operator’s configured key. When the key is
None the snapshot routes return 503 snapshot_signing_not_configured
— mirroring the kernel-registry posture so a client can detect the
feature being disabled without inspecting the URL surface.
Implementations§
Source§impl AppState
impl AppState
Sourcepub fn with_app_config(self, cfg: AppConfig) -> Self
pub fn with_app_config(self, cfg: AppConfig) -> Self
Install the top-level AppConfig,
carrying the snapshot HMAC key + require-signature toggle (M5).
Called by build_router with the
result of AppConfig::from_env
so the /snapshot/* handlers consume the operator-configured key.
Public so integration tests can drive the snapshot routes with an
explicit key without poisoning the process environment.
Sourcepub fn try_new() -> Result<Arc<Self>, TensorWasmError>
pub fn try_new() -> Result<Arc<Self>, TensorWasmError>
Fallible constructor. Returns a TensorWasmError if the underlying
wasmtime engine cannot be initialised (e.g. unsupported strategy
on the host). Production callers should use this and surface the
failure through their own startup path.
Sourcepub fn new() -> Arc<Self> ⓘ
pub fn new() -> Arc<Self> ⓘ
Construct an AppState wrapped in Arc for use with
Router::with_state. Panics on engine initialisation failure.
Prefer AppState::try_new in production code; this convenience
wrapper exists for parity with Default and for tests.
Sourcepub fn with_metrics(self, metrics: Arc<TensorWasmMetrics>) -> Self
pub fn with_metrics(self, metrics: Arc<TensorWasmMetrics>) -> Self
Override the metrics registry, rebuilding the executor so its spawn/terminate counters share the supplied handle.
Useful for tests that need to inspect counter values, or for embedders
who construct a process-wide registry separately. Panics on engine
initialisation failure for ergonomic parity with Self::new.
Trait Implementations§
Source§impl Default for AppState
impl Default for AppState
Source§fn default() -> Self
fn default() -> Self
Default AppState. Calls the internal builder and unwraps for the
same reasons documented on AppState::new: in practice
TensorWasmEngine::new only fails on host misconfiguration, which is a
fatal startup condition. Used by tests via AppState::default().
Auto Trait Implementations§
impl !RefUnwindSafe for AppState
impl !UnwindSafe for AppState
impl Freeze for AppState
impl Send for AppState
impl Sync for AppState
impl Unpin for AppState
impl UnsafeUnpin for AppState
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> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
impl<A, B, T> HttpServerConnExec<A, B> for Twhere
B: Body,
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