polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
90 lines • 2.6 kB
TypeScript
import { EventEmitter } from 'events';
export interface BatchRequestConfig {
maxBatchSize: number;
maxWaitTime: number;
minBatchInterval: number;
enableIntelligentBatching: boolean;
maxConcurrentBatches: number;
retryAttempts: number;
retryDelay: number;
}
export interface BatchRequestItem {
id: string;
method: string;
url: string;
params: Record<string, any>;
body?: any;
headers?: Record<string, string>;
priority: 'low' | 'medium' | 'high';
timestamp: number;
resolve: (value: any) => void;
reject: (error: any) => void;
timeout?: number;
}
export interface BatchResult {
batchId: string;
requestCount: number;
successCount: number;
failureCount: number;
processingTime: number;
results: Array<{
requestId: string;
success: boolean;
data?: any;
error?: any;
responseTime: number;
}>;
}
export interface BatchStats {
totalBatches: number;
totalRequests: number;
averageBatchSize: number;
averageProcessingTime: number;
successRate: number;
requestsPerSecond: number;
pendingRequests: number;
activeBatches: number;
}
export declare class BatchRequestManager extends EventEmitter {
private config;
private pendingRequests;
private activeBatches;
private batchTimers;
private stats;
private requestIdCounter;
private batchIdCounter;
private isRunning;
private periodicProcessTimer?;
constructor(config?: Partial<BatchRequestConfig>);
start(): void;
stop(): void;
addRequest(method: string, url: string, params?: Record<string, any>, body?: any, options?: {
priority?: 'low' | 'medium' | 'high';
headers?: Record<string, string>;
timeout?: number;
}): Promise<any>;
getStats(): BatchStats;
getPendingRequests(): Array<{
id: string;
method: string;
url: string;
priority: string;
timestamp: number;
}>;
flushPendingRequests(): Promise<void>;
updateConfig(newConfig: Partial<BatchRequestConfig>): void;
resetStats(): void;
private generateRequestId;
private generateBatchId;
private checkBatchProcessingConditions;
private scheduleImmediateBatchProcessing;
private setupPeriodicBatchProcessing;
private processNextBatch;
private selectRequestsForBatch;
private selectIntelligentBatch;
private processBatch;
private executeBatch;
private executeIndividualRequest;
private updateBatchStats;
}
//# sourceMappingURL=batch-request-manager.d.ts.map