perf(session): send one projection frame per committed event (#7587)

* perf(session): send one projection frame per committed event

* fix(session): deliver keys changed before a drive failure; address review

* perf(session): carry projection frame changes as key and val entries
This commit is contained in:
imccyu authored and GitHub committed 2026-10-30 14:14:03 +08:00
1 parent 76bb45e2be
commit 945006c984
51 files changed
+631 -283

No files matched your search

@@ -642,15 +642,17 @@ export class SessionManager {
// ---- Live control and Host-event sinks ----
/**
* Apply a complete control baseline or one later replacement frame.
* @param frame - baseline or live control replacement from Session Controller.
* Apply a complete control baseline or one later per-event projection frame.
* @param frame - baseline or live per-event projection change from Session Controller.
*/
handleControlFrame(frame: SessionControlFrame): void {
if (frame.type === 'baseline') {
this.replaceControlBaseline(frame.value)
return
}
this.projectionStore(frame.sessionId).apply(frame.key, frame.value, SessionSeq(frame.seq))
const store = this.projectionStore(frame.sessionId)
const seq = SessionSeq(frame.seq)
for (const change of frame.changes) store.apply(change.key, change.val, seq)
this.notifier.markDirty()
}