Async-runtime-state-to-json
Convert AsyncRuntimeState into a JsonValue. This helper exports the async runtime mode and background worker capability in a structured form.
Interface
pub fn async_runtime_state_to_json(state : AsyncRuntimeState) -> @json_parser.JsonValue {}input
state : AsyncRuntimeState- Runtime capability snapshot, usually produced byasync_runtime_state().
output
JsonValue- Structured JSON representation of the runtime state.
Explanation
Detailed rules explaining key parameters and behaviors
- The output includes
modeandbackground_worker. modeis serialized throughasync_runtime_mode_label(...).- The compact serialized shape is
{"mode":"native_worker|compatibility","background_worker":true|false}. - This helper focuses on runtime capabilities rather than queue counters or logger lifecycle flags.
- The exported JSON is suitable for diagnostics endpoints and startup environment checks.
- This helper serializes the provided
AsyncRuntimeStateexactly as given; it does not callasync_runtime_state()or recheck backend capability by itself. - That means manually constructed runtime snapshots are exported unchanged, with
moderelabeled throughasync_runtime_mode_label(...)andbackground_workerkept exactly as supplied.
How to Use
Here are some specific examples provided.
When Need Structured Runtime Capability Checks
When startup diagnostics should include async runtime capability data:
let runtime_json = async_runtime_state_to_json(async_runtime_state())In this example, the runtime snapshot becomes a reusable JSON value.
When Need To Embed Runtime State In A Larger Payload
When async support should be one field in a bigger diagnostics object:
let payload = async_runtime_state_to_json(state)In this example, callers can reuse the exported object directly.
Error Case
e.g.:
If callers expect logger queue counters or failure status, this API is too narrow and
async_logger_state_to_json(...)should be used instead.If the runtime is in compatibility mode, the helper still serializes normally using the matching mode label.
If callers need the current backend-derived runtime rather than an older or synthetic snapshot, they must capture a fresh
async_runtime_state()first.
Notes
The output field names are fixed as
modeandbackground_worker.The
modefield always uses the canonical labels fromasync_runtime_mode_label(...), not enum names likeNativeWorkerorCompatibility.