UNPKG

@ones-op/node-host

Version:
78 lines (77 loc) 2.77 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.createHeartBeatPlatformMessage = exports.createHostDescriptor = exports.createHeader = exports.parseHeaders = void 0; const config_1 = require("../config"); const logger_1 = require("../logger"); const node_utils_1 = require("@ones-op/node-utils"); const long_1 = __importDefault(require("long")); const nodejs_snowflake_1 = require("nodejs-snowflake"); const uid = new nodejs_snowflake_1.Snowflake(); function parseHeaders(h) { const headers = {}; if (!h) return headers; for (const key of Object.keys(h)) { headers[key] = h[key].val || []; } return headers; } exports.parseHeaders = parseHeaders; function createHeader(message) { if (message) { return { Source: { ID: message.Header?.Distinct?.ID, Tags: message.Header?.Distinct?.Tags, }, Distinct: { ID: message.Header?.Source?.ID, Tags: message.Header?.Source?.Tags, }, SeqNo: message.Header?.SeqNo, }; } return { Source: { ID: config_1.config.host.id, }, Distinct: { ID: '', }, SeqNo: long_1.default.fromString(uid.getUniqueID().toString(), true, 10), }; } exports.createHeader = createHeader; function createHostDescriptor() { return { HostID: config_1.config.host.id, Name: config_1.config.host.name, HostVersion: (0, node_utils_1.formatVersion)(config_1.config.host.version), Language: config_1.config.host.language, LanguageVersion: (0, node_utils_1.formatVersion)(config_1.config.host.language_version), MinSystemVersion: (0, node_utils_1.formatVersion)(config_1.config.host.min_system_version), HostSubVersion: (0, node_utils_1.formatVersion)(config_1.config.host.sub_version), IsLocal: config_1.config.cli.debug_mode, }; } exports.createHostDescriptor = createHostDescriptor; function createHeartBeatPlatformMessage(message, InstanceList) { const Log = logger_1.logs.extract(Infinity); logger_1.logs.clear(); // 发送心跳时,清空日志池,避免堆积日志导致内存泄露 return { Control: { Report: { Log, InstanceList, Host: createHostDescriptor(), Pid: `${process.pid}`, }, Heartbeat: 0, }, Header: createHeader(message), }; } exports.createHeartBeatPlatformMessage = createHeartBeatPlatformMessage;