UNPKG

@push.rocks/smartproxy

Version:

A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, dynamic routing with authentication options, and automatic ACME certificate management.

79 lines (78 loc) 2.48 kB
import * as plugins from './plugins.js'; import type { IConnectionRecord, IPortProxySettings } from './classes.pp.interfaces.js'; import { SecurityManager } from './classes.pp.securitymanager.js'; import { TimeoutManager } from './classes.pp.timeoutmanager.js'; /** * Manages connection lifecycle, tracking, and cleanup */ export declare class ConnectionManager { private settings; private securityManager; private timeoutManager; private connectionRecords; private terminationStats; constructor(settings: IPortProxySettings, securityManager: SecurityManager, timeoutManager: TimeoutManager); /** * Generate a unique connection ID */ generateConnectionId(): string; /** * Create and track a new connection */ createConnection(socket: plugins.net.Socket): IConnectionRecord; /** * Track an existing connection */ trackConnection(connectionId: string, record: IConnectionRecord): void; /** * Get a connection by ID */ getConnection(connectionId: string): IConnectionRecord | undefined; /** * Get all active connections */ getConnections(): Map<string, IConnectionRecord>; /** * Get count of active connections */ getConnectionCount(): number; /** * Initiates cleanup once for a connection */ initiateCleanupOnce(record: IConnectionRecord, reason?: string): void; /** * Clean up a connection record */ cleanupConnection(record: IConnectionRecord, reason?: string): void; /** * Helper method to clean up a socket */ private cleanupSocket; /** * Creates a generic error handler for incoming or outgoing sockets */ handleError(side: 'incoming' | 'outgoing', record: IConnectionRecord): (err: Error) => void; /** * Creates a generic close handler for incoming or outgoing sockets */ handleClose(side: 'incoming' | 'outgoing', record: IConnectionRecord): () => void; /** * Increment termination statistics */ incrementTerminationStat(side: 'incoming' | 'outgoing', reason: string): void; /** * Get termination statistics */ getTerminationStats(): { incoming: Record<string, number>; outgoing: Record<string, number>; }; /** * Check for stalled/inactive connections */ performInactivityCheck(): void; /** * Clear all connections (for shutdown) */ clearConnections(): void; }