ScriptingHub Module
The hub's gRPC scripting service — fans `SessionManager.Frames` out to every connected client on an independent bounded channel, isolates slow / dead clients, and exposes unary RPCs for command submission, status queries, and UnitDef lookups (feature 035-central-gui-hub US7). Fan-out design (research.md R3): * One internal subscriber to `SessionManager.Frames`. * Per-client `System.Threading.Channels.BoundedChannel` of configurable capacity (default 16) with `BoundedChannelFullMode.DropOldest`. Slow / stuck clients cannot back-pressure the producer or other consumers. * Drop counter increments whenever the per-client channel is at capacity at enqueue time. When cumulative drops reach `MaxCumulativeDrops` (default 32) the client is detached with `HubEvents.ScriptingClientDetached(OverflowDropLimit)`.
Types
| Type | Description |
|
Rolled-up roster projection of one connected client for the gRPC `GetSessionStatus` response and the Settings tab's client list. |
|
|
Tunables surfaced on the public constructor so tests can pin capacity + drop threshold. |
|
The hub-side gRPC service implementation. Constructed once per hub process; registered into the Kestrel host via `app.MapGrpcService |
Functions and values
| Function or value |
Description
|
|
Default tunables: `FrameBufferCapacity = 16`, `MaxCumulativeDrops = 32`.
|
FSBarV1_Archived