p2p-media-loader-core
Version:
P2P Media Loader core functionality
111 lines (101 loc) • 3.05 kB
text/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;
}