pub struct AimDbInner {
pub records: BTreeMap<TypeId, Box<dyn AnyRecord>>,
}Expand description
Internal database state
Holds the registry of typed records, indexed by TypeId.
Fields§
§records: BTreeMap<TypeId, Box<dyn AnyRecord>>Map from TypeId to type-erased records (SPMC buffers for internal data flow)
Implementations§
Source§impl AimDbInner
impl AimDbInner
Sourcepub fn get_typed_record<T, R>(&self) -> DbResult<&TypedRecord<T, R>>
pub fn get_typed_record<T, R>(&self) -> DbResult<&TypedRecord<T, R>>
Helper to get a typed record from the registry
This encapsulates the common pattern of:
- Getting TypeId for type T
- Looking up the record in the map
- Downcasting to the typed record
Sourcepub fn list_records(&self) -> Vec<RecordMetadata>
pub fn list_records(&self) -> Vec<RecordMetadata>
Collects metadata for all registered records (std only)
Returns a vector of RecordMetadata for remote access introspection.
Available only when the std feature is enabled.
Sourcepub fn try_latest_as_json(&self, record_name: &str) -> Option<Value>
pub fn try_latest_as_json(&self, record_name: &str) -> Option<Value>
Try to get record’s latest value as JSON by record name (std only)
Searches for a record with the given name and returns its current value
serialized to JSON. Returns None if:
- Record not found
- Record not configured with
.with_serialization() - No value available in the atomic snapshot
§Arguments
record_name- The full Rust type name (e.g., “server::Temperature”)
§Returns
Some(JsonValue) with the current record value, or None
Sourcepub fn set_record_from_json(
&self,
record_name: &str,
json_value: Value,
) -> DbResult<()>
pub fn set_record_from_json( &self, record_name: &str, json_value: Value, ) -> DbResult<()>
Sets a record value from JSON (remote access API)
Deserializes the JSON value and writes it to the record’s buffer.
SAFETY: Enforces the “No Producer Override” rule:
- Only works for records with
producer_count == 0 - Returns error if the record has active producers
§Arguments
record_name- The full Rust type name (e.g., “server::AppConfig”)json_value- JSON representation of the value
§Returns
Ok(())- Successfully set the valueErr(DbError)- If record not found, has producers, or deserialization fails
§Errors
RecordNotFound- Record with given name doesn’t existPermissionDenied- Record has active producers (safety check)RuntimeError- Record not configured with.with_serialization()JsonWithContext- JSON deserialization failed (schema mismatch)
§Example (internal use - called by remote access protocol)
let json_val = serde_json::json!({"log_level": "debug", "version": "1.0"});
db.set_record_from_json("server::AppConfig", json_val)?;