115 lines
2.1 KiB
TypeScript
115 lines
2.1 KiB
TypeScript
![]() |
/**
|
||
|
* Interface definitions for protocol detection components
|
||
|
*/
|
||
|
|
||
|
import type { IDetectionResult, IDetectionOptions } from './detection-types.js';
|
||
|
|
||
|
/**
|
||
|
* Interface for protocol detectors
|
||
|
*/
|
||
|
export interface IProtocolDetector {
|
||
|
/**
|
||
|
* Detect protocol from buffer data
|
||
|
* @param buffer The buffer to analyze
|
||
|
* @param options Detection options
|
||
|
* @returns Detection result or null if protocol cannot be determined
|
||
|
*/
|
||
|
detect(buffer: Buffer, options?: IDetectionOptions): IDetectionResult | null;
|
||
|
|
||
|
/**
|
||
|
* Check if buffer potentially contains this protocol
|
||
|
* @param buffer The buffer to check
|
||
|
* @returns True if buffer might contain this protocol
|
||
|
*/
|
||
|
canHandle(buffer: Buffer): boolean;
|
||
|
|
||
|
/**
|
||
|
* Get the minimum bytes needed for detection
|
||
|
*/
|
||
|
getMinimumBytes(): number;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Interface for connection tracking during fragmented detection
|
||
|
*/
|
||
|
export interface IConnectionTracker {
|
||
|
/**
|
||
|
* Connection identifier
|
||
|
*/
|
||
|
id: string;
|
||
|
|
||
|
/**
|
||
|
* Accumulated buffer data
|
||
|
*/
|
||
|
buffer: Buffer;
|
||
|
|
||
|
/**
|
||
|
* Timestamp of first data
|
||
|
*/
|
||
|
startTime: number;
|
||
|
|
||
|
/**
|
||
|
* Current detection state
|
||
|
*/
|
||
|
state: 'detecting' | 'complete' | 'failed';
|
||
|
|
||
|
/**
|
||
|
* Partial detection result (if any)
|
||
|
*/
|
||
|
partialResult?: Partial<IDetectionResult>;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Interface for buffer accumulator (handles fragmented data)
|
||
|
*/
|
||
|
export interface IBufferAccumulator {
|
||
|
/**
|
||
|
* Add data to accumulator
|
||
|
*/
|
||
|
append(data: Buffer): void;
|
||
|
|
||
|
/**
|
||
|
* Get accumulated buffer
|
||
|
*/
|
||
|
getBuffer(): Buffer;
|
||
|
|
||
|
/**
|
||
|
* Get buffer length
|
||
|
*/
|
||
|
length(): number;
|
||
|
|
||
|
/**
|
||
|
* Clear accumulated data
|
||
|
*/
|
||
|
clear(): void;
|
||
|
|
||
|
/**
|
||
|
* Check if accumulator has enough data
|
||
|
*/
|
||
|
hasMinimumBytes(minBytes: number): boolean;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Detection events
|
||
|
*/
|
||
|
export interface IDetectionEvents {
|
||
|
/**
|
||
|
* Emitted when protocol is successfully detected
|
||
|
*/
|
||
|
detected: (result: IDetectionResult) => void;
|
||
|
|
||
|
/**
|
||
|
* Emitted when detection fails
|
||
|
*/
|
||
|
failed: (error: Error) => void;
|
||
|
|
||
|
/**
|
||
|
* Emitted when detection times out
|
||
|
*/
|
||
|
timeout: () => void;
|
||
|
|
||
|
/**
|
||
|
* Emitted when more data is needed
|
||
|
*/
|
||
|
needMoreData: (bytesNeeded: number) => void;
|
||
|
}
|