@hazae41/kcp
Version:
Zero-copy KCP protocol for the web
68 lines (65 loc) • 1.58 kB
TypeScript
import { Writable, Empty, Opaque } from '@hazae41/binary';
import { Cursor } from '@hazae41/cursor';
interface KcpSegmentParams<Fragment extends Writable> {
readonly conversation: number;
readonly command: number;
readonly count?: number;
readonly window?: number;
readonly timestamp?: number;
readonly serial: number;
readonly unackSerial: number;
readonly fragment: Fragment;
}
declare class KcpSegment<Fragment extends Writable> {
/**
* conv
*/
readonly conversation: number;
/**
* cmd
*/
readonly command: number;
/**
* frg
*/
readonly count: number;
/**
* wnd
*/
readonly window: number;
/**
* ts
*/
readonly timestamp: number;
/**
* sn
*/
readonly serial: number;
/**
* una
*/
readonly unackSerial: number;
/**
* data
*/
readonly fragment: Fragment;
/**
* data size
*/
readonly fragmentSize: number;
static readonly commands: {
readonly push: 81;
readonly ack: 82;
readonly wask: 83;
readonly wins: 84;
};
private constructor();
static empty(params: KcpSegmentParams<Empty>): KcpSegment<Empty>;
static newOrThrow<Fragment extends Writable>(params: KcpSegmentParams<Fragment>): KcpSegment<Fragment>;
sizeOrThrow(): number;
writeOrThrow(cursor: Cursor): void;
static readOrThrow(cursor: Cursor): KcpSegment<Opaque<Uint8Array & {
readonly length: number;
}>>;
}
export { KcpSegment, type KcpSegmentParams };