mirror of
https://github.com/Nanaloveyuki/BitLogger.git
synced 2026-07-24 17:02:19 +00:00
86 lines
2.9 KiB
Markdown
86 lines
2.9 KiB
Markdown
---
|
|
name: async-runtime-state-new
|
|
group: api
|
|
category: async
|
|
update-time: 20260614
|
|
description: Construct an AsyncRuntimeState snapshot from explicit runtime mode and worker-support values without probing or validating the live backend.
|
|
key-word:
|
|
- async
|
|
- runtime
|
|
- state
|
|
- public
|
|
---
|
|
|
|
## Async-runtime-state-new
|
|
|
|
Construct an `AsyncRuntimeState` snapshot from explicit runtime mode and worker-support values. This is the low-level constructor behind the public async runtime state shape used in diagnostics.
|
|
|
|
### Interface
|
|
|
|
```moonbit
|
|
pub fn AsyncRuntimeState::new(
|
|
mode : AsyncRuntimeMode,
|
|
background_worker : Bool,
|
|
) -> AsyncRuntimeState {
|
|
```
|
|
|
|
#### input
|
|
|
|
- `mode : AsyncRuntimeMode` - Backend-specific async runtime mode such as `NativeWorker` or `Compatibility`.
|
|
- `background_worker : Bool` - Whether native-style background-worker support is available.
|
|
|
|
#### output
|
|
|
|
- `AsyncRuntimeState` - Runtime state snapshot containing the supplied mode and worker-support flag.
|
|
|
|
### Explanation
|
|
|
|
Detailed rules explaining key parameters and behaviors
|
|
|
|
- This constructor simply packages `mode` and `background_worker` into one public snapshot value.
|
|
- It does not query the current backend automatically.
|
|
- `async_runtime_state()` is the higher-level API that reads these values from the live runtime environment.
|
|
- It also does not validate whether the supplied pair matches the current backend contract.
|
|
- The constructed value matches the same public shape used by async runtime serializers.
|
|
|
|
### How to Use
|
|
|
|
Here are some specific examples provided.
|
|
|
|
#### When Need A Hand-built Runtime Snapshot
|
|
|
|
When tests or adapters should construct a runtime state explicitly:
|
|
```moonbit
|
|
let runtime = AsyncRuntimeState::new(
|
|
AsyncRuntimeMode::Compatibility,
|
|
false,
|
|
)
|
|
```
|
|
|
|
In this example, the runtime snapshot is built directly without probing the active backend.
|
|
|
|
#### When Need Structured Runtime Diagnostics Input
|
|
|
|
When code should prepare a runtime state value before serialization:
|
|
```moonbit
|
|
let runtime = AsyncRuntimeState::new(async_runtime_mode(), async_runtime_supports_background_worker())
|
|
```
|
|
In this example, callers still use the direct constructor while keeping the data source explicit.
|
|
|
|
### Error Case
|
|
|
|
e.g.:
|
|
- This constructor itself does not have a normal failure mode; it only packages the provided values.
|
|
|
|
- If callers want the current backend snapshot directly, `async_runtime_state()` is the simpler API.
|
|
|
|
- If callers manually pair `NativeWorker` with `false` or `Compatibility` with `true`, the constructor still accepts that snapshot because it does not enforce backend consistency.
|
|
|
|
### Notes
|
|
|
|
1. Use this helper when code should construct an `AsyncRuntimeState` value explicitly.
|
|
|
|
2. Pair it with `AsyncLoggerState::new(...)` when assembling a full async logger snapshot by hand.
|
|
|
|
3. Prefer `async_runtime_state()` when the goal is to report the actual current backend pair rather than an arbitrary constructed snapshot.
|