@ones-op/node-host
Version:
ONES Open Platform Node.js plugin host
78 lines (77 loc) • 2.77 kB
JavaScript
;
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;