Files
sync-server-v2/test/helpers/test-connection.ts
T
2026-07-27 10:22:01 +00:00

46 lines
961 B
TypeScript

import {
BaseStream,
type StreamMessage,
} from "../../source/services/stream/base-stream.js";
/** Minimal observable connection used by application and broadcaster tests. */
export class TestConnection extends BaseStream {
readonly messages: StreamMessage[] = [];
readonly closeCallbacks: Array<() => void> = [];
closed = false;
constructor(
readonly streaming: boolean,
readonly bidirectional: boolean,
) {
super();
}
async send(message: StreamMessage): Promise<void> {
if (this.closed) {
throw new Error("connection is closed");
}
this.messages.push(message);
}
close(): void {
if (this.closed) {
return;
}
this.closed = true;
const callbacks = this.closeCallbacks.splice(0);
callbacks.forEach((callback) => callback());
}
onClose(callback: () => void): void {
if (this.closed) {
callback();
return;
}
this.closeCallbacks.push(callback);
}
}