polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
86 lines • 2.4 kB
TypeScript
import { EventEmitter } from 'events';
import { BaseComponent } from './base.component';
import { ComponentConfig, StreamMetrics } from '../types/monitoring';
export interface StreamMetricsPanelConfig extends ComponentConfig {
refreshInterval: number;
maxDataPoints: number;
channels: string[];
alertThresholds: {
bitrate: {
min: number;
max: number;
};
fps: {
min: number;
max: number;
};
viewerCount: {
max: number;
};
};
chartStyle: {
lineColors: string[];
backgroundColor: string;
foregroundColor: string;
};
}
export interface MetricsDataPoint {
timestamp: Date;
bitrate: number;
fps: number;
viewerCount: number;
bandwidth: number;
channelId: string;
}
export interface ChannelMetricsData {
channelId: string;
channelName?: string;
isActive: boolean;
dataPoints: MetricsDataPoint[];
alerts: AlertInfo[];
lastUpdate: Date;
}
export interface AlertInfo {
type: 'bitrate' | 'fps' | 'viewerCount';
level: 'warning' | 'error';
message: string;
timestamp: Date;
value: number;
threshold: number;
}
export declare class StreamMetricsPanel extends BaseComponent {
private lineChart;
private channelsData;
private currentChannelId;
private container;
private headerBox;
private noDataBox;
private alertBox;
private lastUpdateTime;
private alertCooldowns;
constructor(config: StreamMetricsPanelConfig, eventBus: EventEmitter);
protected createWidget(): void;
private setupKeyBindings;
render(): void;
update(data: StreamMetrics | StreamMetrics[] | {
channels: StreamMetrics[];
}): void;
private processChannelMetrics;
private checkAlerts;
private updateHeader;
private updateAlertDisplay;
private updateChart;
private switchToNextChannel;
private switchToPreviousChannel;
private clearAlerts;
private emitAlert;
private emitChannelSwitch;
private getNoChannelMessage;
private getNoDataMessage;
private getConfig;
getCurrentChannelData(): ChannelMetricsData | null;
getAllChannelsData(): Map<string, ChannelMetricsData>;
setCurrentChannel(channelId: string): void;
destroy(): void;
}
//# sourceMappingURL=stream-metrics.panel.d.ts.map