pub struct AppState {Show 13 fields
pub config: Arc<Config>,
pub db: AnyPool,
pub db_ro: AnyPool,
pub db_kind: DbKind,
pub cas: Arc<IndexMap<String, Arc<CaState>>>,
pub default_ca_id: Arc<String>,
pub otp_store: Option<Arc<OtpStore>>,
pub hsm: Option<Arc<HsmContext>>,
pub audit: Arc<AuditState>,
pub ha_manager: Option<Arc<HaManager>>,
pub gss_cred: Option<Arc<dyn Any + Send + Sync>>,
pub star_manager: Option<Arc<StarManager>>,
pub startup_time: Instant,
}Expand description
Top-level application state cloned into every axum handler.
Fields§
§config: Arc<Config>Parsed and validated configuration.
db: AnyPoolPrimary database connection pool (read-write).
db_ro: AnyPoolRead-only database connection pool.
For SQLite WAL mode, this is a ?mode=ro pool that never acquires
the write lock, enabling concurrent reads during writes. For
PostgreSQL/MariaDB, this is a clone of db (MVCC handles
concurrency natively).
db_kind: DbKindDatabase backend discriminant (drives BEGIN IMMEDIATE for SQLite).
cas: Arc<IndexMap<String, Arc<CaState>>>All CAs keyed by their id, in config declaration order.
default_ca_id: Arc<String>The CA designated as the default for unlabeled EST requests.
otp_store: Option<Arc<OtpStore>>OTP store (present when [otp] is enabled).
hsm: Option<Arc<HsmContext>>HSM context (present when [hsm] is configured).
audit: Arc<AuditState>Shared audit state (overflow flag, alarm counter).
ha_manager: Option<Arc<HaManager>>HA manager for multi-CA failover (present when HA is configured).
gss_cred: Option<Arc<dyn Any + Send + Sync>>Server-side GSSAPI credential for SPNEGO authentication.
None when GSSAPI is not configured. When present, the auth
layer uses it to validate Authorization: Negotiate tokens.
star_manager: Option<Arc<StarManager>>STAR certificate manager (present when [star] is enabled).
Manages active STAR orders and their renewal state (RFC 8739).
startup_time: InstantTimestamp when the server process started.
Used for uptime reporting in health endpoints and session expiry calculations.
Implementations§
Source§impl AppState
impl AppState
Sourcepub fn default_ca(&self) -> &Arc<CaState>
pub fn default_ca(&self) -> &Arc<CaState>
Return the default CA state.
§Panics
Panics if default_ca_id is not present in cas. This indicates
a bug in the startup code — Config::validate() ensures the
default CA exists.
Sourcepub fn get_ca(&self, ca_id: &str) -> Option<&Arc<CaState>>
pub fn get_ca(&self, ca_id: &str) -> Option<&Arc<CaState>>
Look up a CA by its identifier. Returns None for unknown IDs.
Sourcepub fn default_ca_cert_der(&self) -> Option<Vec<u8>>
pub fn default_ca_cert_der(&self) -> Option<Vec<u8>>
Returns the DER-encoded certificate of the default CA.
Used by the OCSP client (RFC 6960) to build CertID structures for
revocation checking of client certificates (RHELBU-3536 R21).
Returns None if no default CA is configured or the cert is empty.
Sourcepub async fn record_audit_event(&self, event_type: &str, detail: &str)
pub async fn record_audit_event(&self, event_type: &str, detail: &str)
Record an audit event, logging (but not propagating) any DB error.
Convenience wrapper that bundles the DB pool and audit state so call sites only need to pass the event type and detail.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for AppState
impl !RefUnwindSafe for AppState
impl Send for AppState
impl Sync for AppState
impl Unpin for AppState
impl UnsafeUnpin for AppState
impl !UnwindSafe 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,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§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