@hazae41/kcp
Version:
Zero-copy KCP protocol for the web
65 lines (62 loc) • 2.23 kB
TypeScript
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 };