UNPKG

@hazae41/kcp

Version:

Zero-copy KCP protocol for the web

65 lines (62 loc) 2.23 kB
import * as _hazae41_cascade from '@hazae41/cascade'; import { FullDuplex } from '@hazae41/cascade'; import { Writable, Opaque } from '@hazae41/binary'; import { Future } from '@hazae41/future'; import { Awaitable } from '../../libs/promises/index.js'; import { SecretKcpReader } from './reader.js'; import { SecretKcpWriter } from './writer.js'; interface KcpDuplexParams { /** * Conversation ID (Uint32) (random if undefined) */ readonly conversation?: number; readonly lowDelay?: number; readonly highDelay?: number; close?(this: undefined): Awaitable<void>; error?(this: undefined, reason?: unknown): Awaitable<void>; } declare class KcpDuplex { #private; readonly params: KcpDuplexParams; constructor(params?: KcpDuplexParams); [Symbol.dispose](): void; get conversation(): number; get inner(): ReadableWritablePair<Writable, Opaque<Uint8Array>>; get outer(): ReadableWritablePair<Opaque<Uint8Array>, Writable>; get closing(): { reason?: undefined; } | undefined; get closed(): { reason?: undefined; } | undefined; error(reason?: unknown): void; close(): void; } declare class SecretKcpDuplex { #private; readonly params: KcpDuplexParams; readonly duplex: FullDuplex<Opaque, Writable>; readonly reader: SecretKcpReader; readonly writer: SecretKcpWriter; readonly conversation: number; readonly resolveOnClose: Future<void>; readonly resolveOnError: Future<unknown>; readonly resolveOnAckBySerial: Map<number, Future<void>>; sendCounter: number; recvCounter: number; constructor(params?: KcpDuplexParams); [Symbol.dispose](): void; get inner(): ReadableWritablePair<Writable, Opaque<Uint8Array>>; get outer(): ReadableWritablePair<Opaque<Uint8Array>, Writable>; get input(): _hazae41_cascade.Simplex<Opaque<Uint8Array>, Opaque<Uint8Array>>; get output(): _hazae41_cascade.Simplex<Writable, Writable>; get closing(): { reason?: undefined; } | undefined; get closed(): { reason?: undefined; } | undefined; error(reason?: unknown): void; close(): void; } export { KcpDuplex, type KcpDuplexParams, SecretKcpDuplex };