@eagleoutice/flowr
Version:
Static Dataflow Analyzer and Program Slicer for the R Programming Language
49 lines (48 loc) • 1.59 kB
TypeScript
import type WebSocket from 'ws';
/** Function handler that should be triggered when the respective socket connects */
export type OnConnect = (c: Socket) => void;
/**
* A generic server interface that allows us to mock the server's behavior in tests.
*/
export interface Server {
/**
* Register a function to be called when a new socket connects.
* This should be only called once per server.
*/
onConnect(handler: OnConnect): void;
start(port: number): void;
}
export declare class WebSocketServerWrapper implements Server {
private server;
private connectHandler;
onConnect(handler: OnConnect): void;
start(port: number): void;
}
/**
* The socket abstraction of *flowR*.
* Essentially a subset of what the default `net.Socket` of `node` provides.
*/
export interface Socket {
remoteAddress?: string;
remotePort?: number;
on(event: 'error', listener: (e: unknown) => void): void;
on(event: 'close', listener: () => void): void;
on(event: 'data', listener: (data: Buffer) => void): void;
write(data: string): void;
end(): void;
}
export declare class WebSocketWrapper implements Socket {
private readonly socket;
remoteAddress?: string;
remotePort?: number;
constructor(socket: WebSocket);
write(data: string): void;
end(): void;
on(event: 'data' | 'close' | 'error', listener: (data: Buffer) => void): void;
}
export declare class NetServer implements Server {
private readonly server;
constructor();
onConnect(handler: OnConnect): void;
start(port: number): void;
}