UNPKG

@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
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