coap
Version:
A CoAP library for node modelled after 'http'
61 lines (60 loc) • 2.56 kB
TypeScript
import { EventEmitter } from 'events';
import { type AddressInfo } from 'net';
import { type CoapServerOptions, type requestListener, type CoapPacket, type MiddlewareParameters } from '../models/models';
import BlockCache from './cache';
import { Socket } from 'dgram';
import { LRUCache } from 'lru-cache';
import IncomingMessage from './incoming_message';
import { type Option, type ParsedPacket } from 'coap-packet';
declare class CoapLRUCache<K extends {}, V extends {}> extends LRUCache<K, V> {
pruneTimer: NodeJS.Timeout;
}
interface Block2CacheEntry {
buffer: Buffer;
options: Option[];
}
declare class CoAPServer extends EventEmitter {
_options: CoapServerOptions;
_proxiedRequests: Map<string, MiddlewareParameters>;
_middlewares: Function[];
_multicastAddress: string | null;
_multicastInterface: string | null;
_lru: CoapLRUCache<string, any>;
_series: any;
_block1Cache: BlockCache<Buffer | {}>;
_block2Cache: BlockCache<Block2CacheEntry | null>;
_sock: Socket | EventEmitter | null;
_internal_socket: boolean;
_clientIdentifier: (request: IncomingMessage) => string;
constructor(serverOptions?: CoapServerOptions | typeof requestListener, listener?: typeof requestListener);
handleRequest(): (msg: Buffer, rsinfo: AddressInfo) => void;
_sendError(payload: Buffer, rsinfo: AddressInfo, packet?: CoapPacket, code?: string): void;
_sendProxied(packet: CoapPacket, proxyUri: string, callback: (error: Error | null, bytes: number) => void): void;
_sendReverseProxied(packet: ParsedPacket, rsinfo: AddressInfo, callback?: (error: Error | null, bytes: number) => void): void;
private generateSocket;
listen(portOrCallback?: number | EventEmitter | ((err?: Error) => void), addressOrCallback?: string | ((err?: Error) => void), done?: (err?: Error) => void): this;
close(done?: (err?: Error) => void): this;
/**
* Entry point for a new datagram from the client.
* @param packet The packet that was sent from the client.
* @param rsinfo Connection info
*/
_handle(packet: CoapPacket, rsinfo: AddressInfo): void;
private saveAdditionalBlock2Options;
/**
*
* @param request
* @param packet
* @returns
*/
_toCacheKey(request: IncomingMessage, packet: CoapPacket): string | null;
/**
*
* @param request
* @param packet
* @param appendToken
* @returns
*/
_toKey(request: IncomingMessage, packet: CoapPacket, appendToken: boolean): string;
}
export default CoAPServer;