UNPKG

egg

Version:

A web application framework for Node.js

66 lines (65 loc) • 1.89 kB
import { EggApplicationCore } from "./egg.js"; import { AgentWorkerLoader } from "./loader/AgentWorkerLoader.js"; import "./loader/index.js"; //#region src/lib/agent.ts /** * Singleton instance in Agent Worker, extend {@link EggApplicationCore} * @augments EggApplicationCore */ var Agent = class extends EggApplicationCore { #agentAliveHandler; /** * @class * @param {Object} options - see {@link EggApplicationCore} */ constructor(options) { super({ ...options, type: "agent" }); this.lifecycle.addBootHook({ configDidLoad: () => this.startKeepAlive() }); } /** * Start the keepalive timer that prevents the agent process from exiting * when it has no pending I/O. Called from configDidLoad so that the timer * is not created during snapshot build (configDidLoad is skipped in snapshot mode). */ startKeepAlive() { if (this.#agentAliveHandler) return; this.#agentAliveHandler = setInterval(() => { this.coreLogger.info("[]"); }, 864e5); } customEggLoader() { return AgentWorkerLoader; } _wrapMessenger() { for (const methodName of [ "broadcast", "sendTo", "sendToApp", "sendToAgent", "sendRandom" ]) wrapMethod(methodName, this.messenger, this.coreLogger); function wrapMethod(methodName, messenger, logger) { const originMethod = messenger[methodName]; messenger[methodName] = function(...args) { const stack = (/* @__PURE__ */ new Error()).stack.split("\n").slice(1).join("\n"); logger.warn("agent can't call %s before server started\n%s", methodName, stack); originMethod.apply(this, args); }; messenger.prependOnceListener("egg-ready", () => { messenger[methodName] = originMethod; }); } } async close() { if (this.#agentAliveHandler) { clearInterval(this.#agentAliveHandler); this.#agentAliveHandler = void 0; } await super.close(); } }; //#endregion export { Agent };