p2p-media-loader-core
Version:
P2P Media Loader core functionality
77 lines (76 loc) • 3.08 kB
TypeScript
import { CommonCoreConfig, StreamConfig, StreamType } from "../types.js";
/** Segments storage interface */
export interface SegmentStorage {
/**
* Initializes storage
* @param coreConfig - Core configuration with storage options
* @param mainStreamConfig - Main stream configuration
* @param secondaryStreamConfig - Secondary stream configuration
*/
initialize(coreConfig: CommonCoreConfig, mainStreamConfig: StreamConfig, secondaryStreamConfig: StreamConfig): Promise<void>;
/**
* Provides playback position from player
* @param position - Playback position
* @param rate - Playback rate
*/
onPlaybackUpdated(position: number, rate: number): void;
/**
* Provides segment request information from player
* @param swarmId - Swarm identifier
* @param streamId - Stream identifier
* @param segmentId - Segment identifier
* @param startTime - Segment start time
* @param endTime - Segment end time
* @param streamType - Stream type
* @param isLiveStream - Is live stream
*/
onSegmentRequested(swarmId: string, streamId: string, segmentId: number, startTime: number, endTime: number, streamType: StreamType, isLiveStream: boolean): void;
/**
* Stores segment data
* @param swarmId - Swarm identifier
* @param streamId - Stream identifier
* @param segmentId - Segment identifier
* @param data - Segment data
* @param startTime - Segment start time
* @param endTime - Segment end time
* @param streamType - Stream type
* @param isLiveStream - Is live stream
*/
storeSegment(swarmId: string, streamId: string, segmentId: number, data: ArrayBuffer, startTime: number, endTime: number, streamType: StreamType, isLiveStream: boolean): Promise<void>;
/**
* Returns segment data
* @param swarmId - Swarm identifier
* @param streamId - Stream identifier
* @param segmentId - Segment identifier
*/
getSegmentData(swarmId: string, streamId: string, segmentId: number): Promise<ArrayBuffer | undefined>;
/**
* Returns used memory information in the storage
*/
getUsage(): {
totalCapacity: number;
usedCapacity: number;
};
/**
* Returns true if segment is in storage
* @param swarmId - Swarm identifier
* @param streamId - Stream identifier
* @param segmentId - Segment identifier
*/
hasSegment(swarmId: string, streamId: string, segmentId: number): boolean;
/**
* Returns segment IDs of a stream that are stored in the storage
* @param swarmId - Swarm identifier
* @param streamId - Stream identifier
*/
getStoredSegmentIds(swarmId: string, streamId: string): number[];
/**
* Sets segment change callback function
* @param callback - Callback function that has to be called when segments appear or disappear in the storage
*/
setSegmentChangeCallback(callback: (streamId: string) => void): void;
/**
* Function to destroy storage
*/
destroy(): void;
}