PortData Module
The port slices of one sidecar build, held for the renderer to derive instance views from. The same shape as `WaveData` and `StepPanelData` and for the same reason: view code reads synchronously, on every render, and a separate process cannot be asked synchronously - so the update function fills this and the views read it (the diagram at the top of SimInterface.fs). What is held is small and immutable by construction. For one simulation the circuit is frozen: the design the sidecar simulates is exactly the design the renderer holds, and draw-block edits touch neither until a refresh builds anew. So a slice is fetched once per (build, instance), never invalidated, never re-fetched - the whole store simply dies with its build. And the instances held are the ones the UI references - the selection's, the top sheet, the ones the selector shows - bounded by what is on screen, never by the expansion. Held rather than modelled for the reason docs/mutableState.md allows: a read-through memo of another process's answers, written from inside the promise that fetched them.
Functions and values
| Function or value | Description |
|
|
Full Usage:
fetch epoch instances
Parameters:
int
instances : InstancePath list
Returns: Promise<Result<int, SidecarFailure>>
|
Fetch and hold the slices of some instances, sequentially in one promise - a slice is a few hundred bytes and a round trip a fifth of a millisecond, so even a whole design is tens of milliseconds, and the selector's ask is a handful. Answers landing for a superseded build are dropped by the epoch check at store time.
|
Full Usage:
forget ()
Parameters:
unit
|
|
|
|
|
|
Full Usage:
storeForTest epoch instance slice
Parameters:
int
instance : InstancePath
slice : ComponentSlots list
|
|