import type { DynaPMConfig } from '../config/types.js'; import type { Logger } from 'pino'; /** * DynaPM网关 * 负责请求拦截、服务启动和反向代理 */ export declare class Gateway { private config; private serviceManager; /** 主机名路由:hostname -> 路由映射信息 */ private hostnameRoutes; /** 端口路由:端口 -> 路由映射信息 */ private portRoutes; /** 日志记录器 */ private logger; /** 日志配置 */ private logging; /** 管理 API 处理器 */ private adminApi; /** 服务启动 Promise 追踪:serviceName -> 启动完成 Promise */ private startingPromises; constructor(config: DynaPMConfig, logger: Logger); /** * 初始化服务映射和端口绑定 */ private initServices; /** * 初始化闲置检查器 */ private initIdleChecker; /** * 检查单个服务是否闲置 */ private checkIdleService; /** * 处理端口绑定请求 */ private handlePortBindingRequest; /** * 处理传入的 HTTP 请求 */ private handleRequest; /** * 启动服务并代理请求 */ private startServiceAndProxy; /** * 处理需要等待服务停止完成的场景 */ private handleServiceWithWait; /** * 处理服务正在启动中的场景 * 等待启动 Promise 完成后,如果成功则直接代理,如果失败则返回 503 */ private handleServiceWithStartPromise; /** * 处理需要启动服务的场景 */ private handleServiceStart; /** * 处理直接代理场景(服务已在线) * 双向流式转发:请求体边收边发,响应体边收边回 */ private handleDirectProxy; /** * 发起代理请求并流式转发响应(用于服务启动/等待场景) * * 仅在服务需要启动或等待停止时使用,此时请求体已缓冲为 Buffer。 * 响应体保持流式转发。 */ private forwardProxyRequest; /** * 启动网关 */ start(): Promise; /** * 为管理 API 创建监听器 */ private createAdminApiListener; /** * 为指定端口创建监听器 */ private createPortBindingListener; /** * 清理所有正在运行的服务 */ cleanup(): Promise; }