UNPKG

3.46 kBTypeScriptView Raw
1import { BaseServiceModule } from './BaseServiceModule';
2import { RegisteredService } from './RegisteredService';
3import { RunningStatus } from "./RunningStatus";
4import * as Emitter from 'component-emitter';
5/**
6 * 服务管理器。管理所有服务的启动、停止、添加、异常处理
7 *
8 * @export
9 * @class BaseServicesManager
10 * @extends {Emitter}
11 */
12export declare class BaseServicesManager extends Emitter {
13 private static _servicesManagerCreated;
14 /**
15 * 注册的服务列表。(服务只应当通过registerService来进行注册)
16 *
17 * key是服务名称
18 */
19 readonly services: Map<string, RegisteredService>;
20 /**
21 * 运行状态
22 */
23 readonly status: RunningStatus;
24 private _status;
25 /**
26 * BaseServicesManager 的名称,默认是类名。
27 */
28 readonly name: string;
29 constructor();
30 /**
31 * 启动所有注册的服务。按照注册的先后顺序来启动服务。先注册的服务先启动。
32 * 如果启动过程中某个服务出现异常,则后面的服务将不再被启动,之前启动过了的服务也会被依次关闭(按照从后向前的顺序关闭)。
33 * 启动结束后会触发started事件
34 */
35 start(): void;
36 /**
37 * 关闭所有已启动的服务。先注册的服务最后被关闭。
38 * 当所有服务都停止后出发stopped事件
39 *
40 * @param exitCode 程序退出状态码。0正常退出 1是系统错误 2用户服务错误
41 */
42 stop(exitCode?: number): void;
43 /**
44 * 进行健康检查。
45 * 注意:如果程序的运行状态为starting,stopping,stopped,则直接将程序的运行视为健康。只有当运行状态为running时才进行健康检查。
46 * 返回 isHealth 表示是否健康 description对当前状态的额外描述
47 *
48 * @returns {Promise<{ isHealth: boolean, description: string }>}
49 * @memberof BaseServicesManager
50 */
51 healthCheck(): Promise<{
52 isHealth: boolean;
53 description: string;
54 }>;
55 /**
56 * 服务运行过程中的错误处理方法。服务启动或关闭过程中产生的错误不会触发该方法。
57 * 覆写时别忘了调用super.onError()
58 *
59 * @param {string | undefined} errName 错误消息的名称
60 * @param {Error} err 错误对象
61 * @param {ServiceModule} service 发生错误的服务实例
62 * @memberof ServicesManager
63 */
64 onError(errName: string | undefined, err: Error, service: BaseServiceModule): void;
65 /**
66 * 当出现未捕获异常时触发(包括为处理promise rejection)
67 * 覆写时别忘了调用super.onUnHandledException()
68 *
69 * @param {Error} err 错误对象
70 */
71 onUnHandledException(err: Error): void;
72 /**
73 * 注册服务。注册服务的名称是以类名为准
74 *
75 * @param {ServiceModule} serviceModule 服务模块实例
76 * @memberof ServicesManager
77 */
78 registerService(serviceModule: BaseServiceModule): void;
79 /**
80 * 程序已启动
81 */
82 on(event: 'started', listener: () => any): this;
83 /**
84 * 程序已关闭。
85 * code 退出状态码
86 */
87 on(event: 'stopped', listener: (code: number) => any): this;
88 once(event: 'started', listener: () => any): this;
89 once(event: 'stopped', listener: (code: number) => any): this;
90}