Something went wrong. Try again.
Atproto AMA app
Something went wrong. Try again.
12345678910111213141516171819202122232425262728/** * Bounded in-memory ring buffer for Jetstream cursor replay. */import type { JetstreamMessage } from "~/lib/jetstream-envelope";
export class JetstreamRingBuffer { private frames: JetstreamMessage[] = [];
constructor(private readonly maxSize: number) {}
append(frame: JetstreamMessage): void { this.frames.push(frame); if (this.frames.length > this.maxSize) { this.frames.shift(); } }
/** Frames with time_us strictly greater than cursor, in insertion order. */ replayAfter(cursor: number | null): JetstreamMessage[] { if (cursor == null) return []; return this.frames.filter((frame) => frame.time_us > cursor); }
size(): number { return this.frames.length; }}