UNPKG

@akala/core

Version:
42 lines (41 loc) 2.41 kB
import type { AllEventKeys } from "../events/event-bus.js"; import { EventEmitter, type AllEvents } from "../events/event-emitter.js"; import type { EventListener, EventOptions } from "../events/shared.js"; import { IsomorphicBuffer } from "../helpers.js"; import { SocketAdapterAkalaEventMap, SocketAdapter } from "./shared.js"; import { type Subscription } from "../teardown-manager.js"; import { Socket } from 'dgram'; export interface RemoteInfo { address: string; port: number; } export interface UdpMessage { message: IsomorphicBuffer; remote: RemoteInfo; } export type UdpSocketAdapterAkalaEventMap = SocketAdapterAkalaEventMap<UdpMessage>; export declare class UdpSocketAdapter extends EventEmitter<SocketAdapterAkalaEventMap<UdpMessage>> implements SocketAdapter<UdpMessage> { private readonly socket; constructor(socket: Socket); pipe(socket: SocketAdapter<UdpMessage>): void; /** * Tells the kernel to join a multicast group at the given `multicastAddress` and `multicastInterface` using the `IP_ADD_MEMBERSHIP` socket option. If the `multicastInterface` argument is not * specified, the operating system will choose * one interface and will add membership to it. To add membership to every * available interface, call `addMembership` multiple times, once per interface. * * When called on an unbound socket, this method will implicitly bind to a random * port, listening on all interfaces. * **/ addMembership(address: string, interfaceAddress?: string): void; bind(port: number, address?: string): Promise<void>; private closed; get open(): boolean; close(): Promise<void>; send(data: UdpMessage): Promise<void>; private readonly messageListeners; off<const TEvent extends AllEventKeys<UdpSocketAdapterAkalaEventMap>>(event: TEvent, handler: EventListener<AllEvents<UdpSocketAdapterAkalaEventMap>[TEvent]>): boolean; on<const TEvent extends AllEventKeys<UdpSocketAdapterAkalaEventMap>>(event: TEvent, handler: EventListener<AllEvents<UdpSocketAdapterAkalaEventMap>[TEvent]>, options?: EventOptions<AllEvents<UdpSocketAdapterAkalaEventMap>[TEvent]>): Subscription; once<const TEvent extends AllEventKeys<UdpSocketAdapterAkalaEventMap>>(event: TEvent, handler: EventListener<AllEvents<UdpSocketAdapterAkalaEventMap>[TEvent]>): Subscription; }