@firaenix/bittorrent-protocol
Version:
Simple, robust, BitTorrent peer wire protocol implementation
28 lines (27 loc) • 1.17 kB
TypeScript
/// <reference types="node" />
import Wire from '../Wire';
import { HandshakeExtensions, ExtendedHandshake } from '../Extension';
import { BitFieldData } from 'bitfield';
export declare type ExtensionExtraFields = {
[key: string]: Buffer;
};
export interface IExtension {
wire: Wire;
name: string;
requirePeer?: boolean;
extraFields?: ExtensionExtraFields;
sendExtendedMessage: (data: object) => void;
onHandshake: (infoHash: string, peerId: string, extensions: HandshakeExtensions) => void;
onExtendedHandshake: (handshake: ExtendedHandshake) => void;
onMessage: (buf: Buffer) => void;
onPiece?: (index: number, offset: number, buffer: Buffer) => Promise<void>;
onFinish?: () => Promise<void>;
onCancel?: (index: number, offset: number, length: number) => Promise<void>;
onRequest?: (index: number, offset: number, length: number) => Promise<void>;
onBitField?: (bitfield: BitFieldData) => Promise<void>;
onHave?: (index: number) => Promise<void>;
onUninterested?: () => Promise<void>;
onInterested?: () => Promise<void>;
onUnchoke?: () => Promise<void>;
onChoke?: () => Promise<void>;
}