@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
TypeScript
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;
}