lifxlan
Version:
TypeScript library for controlling LIFX products over LAN
36 lines • 1.54 kB
TypeScript
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