p2p-media-loader-core
Version:
P2P Media Loader core functionality
29 lines (28 loc) • 1.56 kB
TypeScript
import { Request } from "../requests/request.js";
import { CoreEventMap, SegmentWithStream, PeerError, PeerWarning } from "../types.js";
import { PeerConfig } from "./peer-protocol.js";
import { EventTarget } from "../utils/event-target.js";
type PeerEventHandlers = {
onSegmentRequested: (peer: Peer, segmentId: number, requestId: number, byteFrom?: number) => void;
onSegmentsAnnouncement: () => void;
onWarning: (warning: PeerWarning) => void;
};
export declare class Peer {
#private;
readonly id: string;
readonly channel: RTCDataChannel;
readonly eventTarget: EventTarget<CoreEventMap>;
readonly connectedAt: number;
get isDestroyed(): boolean;
constructor(id: string, channel: RTCDataChannel, closeConnection: (error?: PeerError) => void, eventHandlers: PeerEventHandlers, peerConfig: PeerConfig, eventTarget: EventTarget<CoreEventMap>);
get downloadingSegment(): SegmentWithStream | undefined;
get isUploadingSegment(): boolean;
getDownloadBandwidth(): number;
getSegmentStatus(segment: SegmentWithStream): "loaded" | "http-loading" | undefined;
downloadSegment(segmentRequest: Request): void;
uploadSegmentData(segment: SegmentWithStream, requestId: number, data: ArrayBuffer | ArrayBufferView<ArrayBuffer>): Promise<void>;
sendSegmentsAnnouncementCommand(loadedSegmentsIds: number[], httpLoadingSegmentsIds: number[]): void;
sendSegmentAbsentCommand(segmentExternalId: number, requestId: number): void;
destroy(isConnectionClosed?: boolean, error?: PeerError): void;
}
export {};