Initial offline process implementation
Implemented the initial offline processing implementation, with dependency layer building and ordered processing Processing is still single threaded and unoptimized so it can take some time to complete, the next step is to move from a single threaded design to a ThreadPoolExecutor that splits up the buffer into a set number of chunks for processing
This commit is contained in:
7 files changed
+405
-22
No files matched your search
+22
-1
@@ -43,7 +43,7 @@ again.
|
||||
| `host` | `str` | `"127.0.0.1"` | TCP bind address. |
|
||||
| `port` | `int` | `58763` | TCP bind port; validated from 0 through 65535. |
|
||||
| `thread_debug` | `bool` | `False` | Enables periodic per-thread CPU debug logging. |
|
||||
| `playback_mode` | `"reprocess" \| "read"` | `"reprocess"` | Whether playback recalculates bound derived signals or reads their recorded values. |
|
||||
| `playback_mode` | `"reprocess" \| "read"` | `"reprocess"` | Whether playback recalculates bound derived signals or reads their recorded values. Offline `reprocess()` requires `"read"`. |
|
||||
|
||||
`CoreConfig.bind_str() -> str` returns `"host:port"`.
|
||||
|
||||
@@ -106,6 +106,27 @@ Available only in `"offline"` mode (`CoreError(code="invalid_mode")`). Pass a
|
||||
a processing buffer and create its manifest. Omitting `input` before a
|
||||
recording is available raises `CoreError(code="no_playback_data")`.
|
||||
|
||||
### `reprocess() -> None`
|
||||
|
||||
Recalculates derived signals in the current processing buffer using the bound
|
||||
derive units. Call it in `"offline"` mode after `load_processing_buffer()`, with
|
||||
`CoreConfig(playback_mode="read")`. Units with source inputs run first; units
|
||||
that depend on their derived outputs run in dependency order. The operation
|
||||
removes previously recorded derived samples and descriptors, then merges the
|
||||
new outputs into the processing buffer. Calling it again replaces those
|
||||
outputs. It does not write an archive or start playback; use `write()` to save
|
||||
the result, or switch to `"playback"` mode, call `load_playback_engine()`, and
|
||||
then `play()`.
|
||||
|
||||
The mode, configuration, and buffer checks raise `CoreError` with codes
|
||||
`"invalid_mode"`, `"invalid_config"`, and `"empty_buffer"`, respectively.
|
||||
Unresolved derive dependencies raise `DeriveError(code="unresolved_dependencies")`;
|
||||
a unit that produces no values raises `DeriveError(code="no_values")`. Errors
|
||||
from a derive function propagate to the caller. Reprocessing changes the
|
||||
in-memory processing buffer before all units finish, so a failed call may
|
||||
leave its old derived data removed. Reload an unchanged archive before retrying
|
||||
if that data is needed.
|
||||
|
||||
## Signals and live values
|
||||
|
||||
`SignalDescriptor` is the lightweight internal signal type in
|
||||
|
||||
Reference in new issue
Block a user