Report errors when start() is called multiple times

This commit is contained in:
Justin Spahr-Summers 2024-10-16 13:14:47 +01:00
commit 7b718de77c
No known key found for this signature in database
2 changed files with 29 additions and 1 deletions

View file

@ -37,7 +37,9 @@ export class SSEServerTransport implements Transport {
*/
async start(): Promise<void> {
if (this._sseResponse) {
throw new Error("Already connected!");
throw new Error(
"SSEServerTransport already started! If using Server class, note that connect() calls start() automatically.",
);
}
this.res.writeHead(200, {

View file

@ -11,6 +11,7 @@ import { Transport } from "../shared/transport.js";
*/
export class StdioServerTransport implements Transport {
private _readBuffer: ReadBuffer = new ReadBuffer();
private _started = false;
constructor(
private _stdin: Readable = process.stdin,
@ -34,6 +35,13 @@ export class StdioServerTransport implements Transport {
* Starts listening for messages on stdin.
*/
async start(): Promise<void> {
if (this._started) {
throw new Error(
"StdioServerTransport already started! If using Server class, note that connect() calls start() automatically.",
);
}
this._started = true;
this._stdin.on("data", this._ondata);
this._stdin.on("error", this._onerror);
}