polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
69 lines • 2.14 kB
TypeScript
import { EventEmitter } from 'events';
export interface AdaptivePollingConfig {
baseInterval: number;
minInterval: number;
maxInterval: number;
sensitivity: number;
sampleSize: number;
rateLimitPerMinute: number;
}
export interface DataSourceStats {
id: string;
currentInterval: number;
lastPoll: number;
changeCount: number;
totalPolls: number;
changeRate: number;
volatility: number;
changeSamples: number[];
}
export interface BatchRequestConfig {
maxBatchSize: number;
batchTimeout: number;
batchInterval: number;
}
export interface ApiCallStats {
totalCalls: number;
successfulCalls: number;
failedCalls: number;
averageResponseTime: number;
callsPerMinute: number;
lastCallTime: number;
}
export declare class AdaptivePollingManager extends EventEmitter {
private config;
private dataSourceStats;
private intervalTimers;
private batchConfig;
private apiStats;
private pendingRequests;
private batchTimers;
private isRunning;
constructor(config?: Partial<AdaptivePollingConfig>);
start(): void;
stop(): void;
registerDataSource(dataSourceId: string, initialInterval?: number): void;
unregisterDataSource(dataSourceId: string): void;
reportDataChange(dataSourceId: string, changeData?: any): void;
getOptimalInterval(dataSourceId: string): number;
queueBatchRequest(batchId: string, request: any, priority?: 'high' | 'medium' | 'low'): Promise<any>;
getApiStats(): ApiCallStats;
getDataSourceStats(): Map<string, DataSourceStats>;
getStats(): {
dataSourceCount: number;
totalPolls: number;
totalChanges: number;
apiStats: ApiCallStats;
averageInterval: number;
activeDataSources: string[];
};
private startPollingForDataSource;
private pollDataSource;
private updateVolatilityAndInterval;
private calculateOptimalInterval;
private restartPollingForDataSource;
private processBatch;
private trackApiCall;
private setupRateLimitMonitoring;
}
//# sourceMappingURL=adaptive-polling.d.ts.map