import { ErrorInfo, LogInfo, Subcategory, DevConfig, ServiceType } from '../types'; import { IContext } from '../../server'; import { IAbility } from './ability'; /** * 基础服务接口 * 提供配置管理、上下文处理和日志功能 */ export interface IBaseService { /** * 初始化服务 * @param config 服务配置 */ init(config: any): Promise | void; /** * 从配置中提取特定类型的配置项 * @param config 原始配置 * @returns 提取后的配置 */ extractConfig(config: DevConfig): T; /** * 获取服务上下文 * @returns 当前上下文 */ getContext(): IContext; /** * 获取所有日志 * @returns 日志列表 */ getLogs(): LogInfo[]; /** * 获取消息日志 * @returns 消息日志列表 */ getInfos(): LogInfo[]; /** * 获取错误日志 * @returns 错误日志列表 */ getErrors(): LogInfo[]; /** * 获取警告日志 * @returns 警告日志列表 */ getWarns(): LogInfo[]; /** * 添加信息日志 * @param message 日志消息 */ addInfo(message: string, ...args: any[]): void; /** * 添加警告日志 * @param message 警告消息 */ addWarn(message: string): void; /** * * @param code 错误码 * @param error 错误信息 * @param type 错误类型 */ addError(code: number | Subcategory, error: Error | string, type?: string): void; /** * 创建错误码 * @param errorLog 错误日志 * @returns 错误码 */ createErrorCode(errorLog: ErrorInfo): ErrorInfo | undefined; /** * 获取服务能力 * @param key 能力标识,不传则返回所有可访问的能力 * @returns 能力实现或能力数组 */ getAbility(key?: string): T | Array>; /** * 提供服务能力,将本服务的能力注册到能力中心 * @param key 能力唯一标识 * @param implementation 能力实现 */ provideAbility(key: string, implementation: T): void; /** * 获取服务标识 * @returns 服务唯一标识 */ getType(): ServiceType; /** * 生成服务唯一标识 * @returns 服务唯一标识 */ generateId(): string; /** * 检查能力是否存在且可访问 * @param key 能力标识 * @returns 能力是否可用 */ hasAbility(key: string): boolean; /** * 注册一个方法到某个服务中, * @param name 方法名 * @param fn 方法实现 * @param service 服务实例 */ registerMethod(name: string, fn: Function): void; }