@akala/core
Version:
42 lines (41 loc) • 2.41 kB
TypeScript
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;
}