p2p-media-loader-core
Version:
P2P Media Loader core functionality
43 lines (42 loc) • 2 kB
TypeScript
import { PeerConnection } from "bittorrent-tracker";
import { Request } from "../requests/request.js";
import { CoreEventMap, SegmentWithStream, StreamType } from "../types.js";
import { PeerConfig } from "./peer-protocol.js";
import { EventTarget } from "../utils/event-target.js";
type PeerEventHandlers = {
onPeerClosed: (peer: Peer) => void;
onSegmentRequested: (peer: Peer, segmentId: number, requestId: number, byteFrom?: number) => void;
onSegmentsAnnouncement: () => void;
};
export declare class Peer {
private readonly connection;
private readonly eventHandlers;
private readonly peerConfig;
private readonly streamType;
private readonly eventTarget;
readonly id: string;
private readonly peerProtocol;
private downloadingContext?;
private loadedSegments;
private httpLoadingSegments;
private downloadingErrors;
private logger;
private readonly onPeerClosed;
constructor(connection: PeerConnection, eventHandlers: PeerEventHandlers, peerConfig: PeerConfig, streamType: StreamType, eventTarget: EventTarget<CoreEventMap>);
get downloadingSegment(): SegmentWithStream | undefined;
getSegmentStatus(segment: SegmentWithStream): "loaded" | "http-loading" | undefined;
private onCommandReceived;
protected onSegmentChunkReceived: (chunk: Uint8Array) => void;
downloadSegment(segmentRequest: Request): void;
uploadSegmentData(segment: SegmentWithStream, requestId: number, data: ArrayBuffer): Promise<void>;
private cancelSegmentDownloading;
sendSegmentsAnnouncementCommand(loadedSegmentsIds: number[], httpLoadingSegmentsIds: number[]): void;
sendSegmentAbsentCommand(segmentExternalId: number, requestId: number): void;
private sendCancelSegmentRequestCommand;
private sendSegmentDataSendingCompletedCommand;
private onPeerConnectionClosed;
private onConnectionError;
destroy: () => void;
static getPeerIdFromConnection(connection: PeerConnection): string;
}
export {};