UNPKG

lifxlan

Version:

TypeScript library for controlling LIFX products over LAN

36 lines 1.54 kB
import { Header } from './encoding.js'; export type { Header }; export type MessageHandler = (header: Header, payload: Uint8Array, serialNumber: string) => void; export interface RouterOptions { onSend: (message: Uint8Array, port: number, address: string, serialNumber?: string) => void; onMessage?: MessageHandler; handlers?: Map<number, MessageHandler>; } export interface RouterInstance { nextSource(): number; register(source: number, handler: MessageHandler): void; deregister(source: number, handler: MessageHandler): void; send(message: Uint8Array, port: number, address: string, serialNumber?: string): void; receive(message: Uint8Array): { header: Header; payload: Uint8Array; serialNumber: string; }; } /** * Since a client is a source of messages and there may be multiple * clients sending messages at the same time, the router receives * response messages and routes them to the client (a MessageHandler) * that sent the request message. * * It has the added benefit of allowing callers to send messages * messages. With the previous benefit, the router helps associate * received messages with previously sent messages. * * It also decodes the header and converts the target to a serial * number string. This helps avoid calling the relatively expensive * convertTargetToSerialNumber utility function multiple times for * each response message. */ export declare function Router(options: RouterOptions): RouterInstance; //# sourceMappingURL=router.d.ts.map