polyv-live-cli
Version:
CLI tool for managing PolyV live streaming services.
99 lines • 3.09 kB
TypeScript
import { EventEmitter } from 'events';
import http from 'http';
import https from 'https';
export interface ConnectionPoolConfig {
maxConnectionsPerHost: number;
maxTotalConnections: number;
connectionTimeout: number;
keepAliveTimeout: number;
maxIdleTime: number;
enablePooling: boolean;
enableKeepAlive: boolean;
socketTimeout: number;
maxRequestsPerConnection: number;
}
export interface ConnectionStats {
activeConnections: number;
idleConnections: number;
totalRequests: number;
reusedConnections: number;
reuseRatio: number;
averageConnectionDuration: number;
poolUtilization: number;
hostStats: Map<string, HostConnectionStats>;
}
export interface HostConnectionStats {
host: string;
activeConnections: number;
idleConnections: number;
totalRequests: number;
reuseCount: number;
averageResponseTime: number;
}
interface PooledConnection {
id: string;
host: string;
port: number;
protocol: 'http' | 'https';
socket: any;
createdAt: number;
lastUsed: number;
requestCount: number;
isActive: boolean;
state: 'connecting' | 'connected' | 'idle' | 'closing' | 'closed';
}
export declare class ConnectionPoolManager extends EventEmitter {
private config;
private connectionPool;
private activeConnections;
private pendingRequests;
private stats;
private cleanupTimer?;
private requestIdCounter;
private connectionIdCounter;
private httpAgent?;
private httpsAgent?;
private isRunning;
constructor(config?: Partial<ConnectionPoolConfig>);
start(): void;
stop(): void;
getConnection(host: string, port: number, protocol?: 'http' | 'https'): Promise<PooledConnection>;
returnConnection(connection: PooledConnection): void;
getStats(): ConnectionStats;
getPoolInfo(): {
totalConnections: number;
connectionsByHost: Map<string, number>;
idleConnectionsByHost: Map<string, number>;
activeConnectionsByHost: Map<string, number>;
pendingRequestsByHost: Map<string, number>;
oldestConnection: PooledConnection | null;
newestConnection: PooledConnection | null;
};
forceCleanup(): Promise<void>;
updateConfig(newConfig: Partial<ConnectionPoolConfig>): void;
getAgents(): {
httpAgent?: http.Agent;
httpsAgent?: https.Agent;
};
private initializeAgents;
private setupEventHandlers;
private getIdleConnection;
private canCreateNewConnection;
private createNewConnection;
private createSocket;
private queueConnectionRequest;
private activateConnection;
private shouldReuseConnection;
private processPendingRequests;
private removePendingRequest;
private getHostConnectionCount;
private startCleanupTimer;
private cleanupIdleConnections;
private closeConnection;
private closeAllConnections;
private updateHostStats;
private updateReuseRatio;
private updatePoolStats;
}
export {};
//# sourceMappingURL=connection-pool-manager.d.ts.map