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:
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()
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user