@foxglove/ros1
Version:
Standalone TypeScript implementation of the ROS 1 (Robot Operating System) protocol with a pluggable transport layer
50 lines • 1.75 kB
TypeScript
import { MessageDefinition } from "@foxglove/message-definition";
import { MessageReader } from "@foxglove/rosmsg-serialization";
import { EventEmitter } from "eventemitter3";
import { Connection } from "./Connection";
import { PublisherLink } from "./PublisherLink";
import { RosFollowerClient } from "./RosFollowerClient";
type PublisherStats = [
connectionId: number,
bytesReceived: number,
messagesReceived: number,
estimatedDrops: number,
connected: 0
];
type PublisherInfo = [
connectionId: number,
publisherXmlRpcUri: string,
direction: "i",
transport: string,
topicName: string,
connected: number,
connectionInfo: string
];
type SubscriptionOpts = {
name: string;
md5sum: string;
dataType: string;
tcpNoDelay: boolean;
};
export interface SubscriptionEvents {
header: (header: Map<string, string>, msgDef: MessageDefinition[], msgReader: MessageReader) => void;
message: (msg: unknown, data: Uint8Array, publisher: PublisherLink) => void;
error: (err: Error) => void;
}
export declare class Subscription extends EventEmitter<SubscriptionEvents> {
readonly name: string;
readonly md5sum: string;
readonly dataType: string;
readonly tcpNoDelay: boolean;
private _publishers;
constructor({ name, md5sum, dataType, tcpNoDelay }: SubscriptionOpts);
close(): void;
publishers(): Readonly<Map<number, PublisherLink>>;
addPublisher(connectionId: number, rosFollowerClient: RosFollowerClient, connection: Connection): void;
removePublisher(connectionId: number): boolean;
getInfo(): PublisherInfo[];
getStats(): [string, PublisherStats[]];
receivedBytes(): number;
}
export {};
//# sourceMappingURL=Subscription.d.ts.map