UNPKG

@foxglove/ros1

Version:

Standalone TypeScript implementation of the ROS 1 (Robot Operating System) protocol with a pluggable transport layer

80 lines (62 loc) 1.76 kB
import { EventEmitter } from "eventemitter3"; import { TcpAddress, TcpServer, TcpServerEvents, TcpSocket, TcpSocketEvents } from "../TcpTypes"; export class MockTcpSocket extends EventEmitter<TcpSocketEvents> implements TcpSocket { private _connected = true; constructor() { super(); } async remoteAddress(): Promise<TcpAddress | undefined> { return { address: "192.168.1.2", port: 40000, family: this._connected ? "IPv4" : undefined, }; } async localAddress(): Promise<TcpAddress | undefined> { return this._connected ? { address: "127.0.0.1", port: 30000, family: "IPv4" } : undefined; } async fd(): Promise<number | undefined> { return 1; } async connected(): Promise<boolean> { return this._connected; } async connect(): Promise<void> { // no-op } async close(): Promise<void> { this._connected = false; } async write(_data: Uint8Array): Promise<void> { // no-op } // eslint-disable-next-line @foxglove/no-boolean-parameters async setNoDelay(_noDelay?: boolean): Promise<void> { // no-op } } export class MockTcpServer extends EventEmitter<TcpServerEvents> implements TcpServer { listening = true; constructor() { super(); } async address(): Promise<TcpAddress | undefined> { return this.listening ? { address: "192.168.1.1", port: 20000, family: "IPv4" } : undefined; } close(): void { this.listening = false; } } export async function TcpListen(_options: { host?: string; port?: number; backlog?: number; }): Promise<MockTcpServer> { return new MockTcpServer(); } export async function TcpSocketConnect(_options: { host: string; port: number; }): Promise<TcpSocket> { return new MockTcpSocket(); }