///
///
import { net } from "../adapter";
import ConnectFactor, { ConnectPipe } from "../connect";
import { AcceptOptions, AuthData, ReadData, WriteData } from "../types";
import { ProtocolType } from "../connect/types";
import { IOSocket } from "../stream";
import EventEmitter from "eventemitter3";
export type EventType = {
open: () => void;
in: (data: ReadData) => void;
out: (data: WriteData) => void;
auth: (data: AuthData) => void;
close: (socket: net.Socket) => void;
timeout: (socket?: net.Socket) => void;
error: (err: Error) => void;
};
/**
* 接收应用端接入协议处理基类
*/
export default abstract class Accept extends EventEmitter {
connectFactor: ConnectFactor;
options: AcceptOptions;
protocol: ProtocolType;
constructor(options: AcceptOptions);
get acceptAuth(): import("../types").AcceptAuthData | undefined;
clone2target(target: Accept): void;
/**
* 注册连接器, 连接目标服务协议
* @param connectFactor
*/
registerConnect(connectFactor: ConnectFactor): void;
/**;
* 是否可以接入, 请求的协议是否可以接入处理
* @param socket
* @param chunk
*/
abstract isAccept(chunk: Buffer): Promise;
/**
* 连接处理
* @param socket
* @param firstChunk
*/
abstract handle(socket: IOSocket, firstChunk: Buffer): Promise;
/**
* 连接目标
* @param host 目标服务主机ip
* @param port 目标服务主机端口
* @param localSocket 本地socket连接
* @param chunk 首次请求的原始数据
* @param inputTransform 输入流解码
*/
protected connect({ host, port, localSocket, user, data }: ConnectPipe): Promise;
protected splitPasswodArgs(str: string): {
password: string;
args: string[];
};
}