@eleven-am/transcoder
Version:
High-performance HLS transcoding library with hardware acceleration, intelligent client management, and distributed processing support for Node.js
60 lines • 2.38 kB
TypeScript
import { RedisClientType } from 'redis';
import { SegmentClaim } from './interfaces';
/**
* Manages distributed segment claims using Redis
* Ensures only one worker processes each segment at a time
*/
export declare class RedisSegmentClaimManager {
private readonly redis;
private readonly workerId;
private readonly defaultTTL;
private readonly lockPrefix;
private readonly statusPrefix;
private readonly completedPrefix;
private readonly completedSegmentTTL;
private readonly subscriberPool;
private readonly poolSize;
private disposed;
constructor(redis: RedisClientType, workerId: string, defaultTTL?: number, // 60 seconds
completedSegmentTTL?: number);
/**
* Try to claim a segment for processing
*/
claimSegment(fileId: string, streamType: string, quality: string, streamIndex: number, segmentIndex: number): Promise<SegmentClaim>;
/**
* Check if a segment is already completed
*/
isSegmentCompleted(fileId: string, streamType: string, quality: string, streamIndex: number, segmentIndex: number): Promise<boolean>;
/**
* Mark a segment as completed
*/
markSegmentCompleted(fileId: string, streamType: string, quality: string, streamIndex: number, segmentIndex: number): Promise<void>;
/**
* Get the status of a segment
*/
getSegmentStatus(fileId: string, streamType: string, quality: string, streamIndex: number, segmentIndex: number): Promise<string | null>;
/**
* Publish segment completion event
*/
publishSegmentComplete(fileId: string, streamType: string, quality: string, streamIndex: number, segmentIndex: number): Promise<void>;
/**
* Get a subscriber from the pool or create a new one
*/
private getSubscriber;
/**
* Release a subscriber back to the pool or disconnect it
*/
private releaseSubscriber;
/**
* Subscribe to segment completion events
*/
subscribeToSegmentComplete(fileId: string, streamType: string, quality: string, streamIndex: number, segmentIndex: number, callback: () => void): Promise<() => Promise<void>>;
/**
* Dispose of the manager and clean up resources
*/
dispose(): Promise<void>;
private getSegmentKey;
private createFailedClaim;
private createSuccessfulClaim;
}
//# sourceMappingURL=redisSegmentClaimManager.d.ts.map