UNPKG

s7-server

Version:
119 lines 3.1 kB
/** * Connection Manager for S7 Protocol * Handles client connections, PDU negotiation, and connection state */ import { Socket } from 'net'; import { EventEmitter } from 'events'; import { ConnectionState, ConnectionParams } from './iso-tcp'; export interface ConnectionInfo { id: string; socket: Socket; address: string; port: number; state: ConnectionState; params: ConnectionParams; sequenceNumber: number; lastActivity: Date; negotiatedPDU: number; } export interface ClientInfo { id: string; address: string; port: number; connected: boolean; lastActivity: Date; negotiatedPDU: number; } export declare class ConnectionManager extends EventEmitter { private connections; private clientCounter; private maxClients; private maxPDUSize; constructor(maxClients?: number, maxPDUSize?: number); /** * Handle new client connection */ handleNewConnection(socket: Socket): Promise<string | null>; /** * Handle ISO-TCP connection request */ handleConnectionRequest(clientId: string, data: Buffer): Promise<boolean>; /** * Handle S7 PDU negotiation */ handlePDUNegotiation(clientId: string, data: Buffer): Promise<boolean>; /** * Handle S7 data request */ handleS7Request(clientId: string, data: Buffer): Promise<boolean>; /** * Send S7 response to client */ sendS7Response(clientId: string, response: Buffer): Promise<boolean>; /** * Disconnect client */ disconnectClient(clientId: string): Promise<void>; /** * Disconnect all clients */ disconnectAllClients(): Promise<void>; /** * Get client information */ getClientInfo(clientId: string): ClientInfo | null; /** * Get all connected clients */ getAllClients(): ClientInfo[]; /** * Get connected clients count */ getClientsCount(): number; /** * Check if client is connected */ isClientConnected(clientId: string): boolean; /** * Get client's negotiated PDU size */ getClientPDUSize(clientId: string): number; /** * Setup socket event handlers */ private setupSocketHandlers; /** * Handle incoming PDU */ private handlePDU; /** * Handle client disconnect */ private handleClientDisconnect; /** * Extract sequence number from address (simplified) */ private extractSequenceFromAddress; /** * Cleanup inactive connections */ cleanupInactiveConnections(timeoutMs?: number): void; /** * Update server configuration */ updateConfig(maxClients: number, maxPDUSize: number): void; /** * Get connection by client ID */ getConnection(clientId: string): ConnectionInfo | undefined; /** * Get connection statistics */ getStatistics(): { totalConnections: number; connectedClients: number; maxClients: number; maxPDUSize: number; }; } //# sourceMappingURL=connection-manager.d.ts.map