@nsshunt/stsappframework 3.1.130 → 3.1.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ipcMessageHandler.js +4 -2
- package/dist/ipcMessageHandler.js.map +1 -1
- package/dist/ipcMessageManager.js +32 -4
- package/dist/ipcMessageManager.js.map +1 -1
- package/dist/ipcMessageProcessorPrimary.js +2 -1
- package/dist/ipcMessageProcessorPrimary.js.map +1 -1
- package/dist/ipcMessageProcessorWorker.js +2 -1
- package/dist/ipcMessageProcessorWorker.js.map +1 -1
- package/dist/redisMessageHandler.js +144 -6
- package/dist/redisMessageHandler.js.map +1 -1
- package/dist/redisMessageHandler.test.js +4 -2
- package/dist/redisMessageHandler.test.js.map +1 -1
- package/dist/testing/app.js +191 -37
- package/dist/testing/app.js.map +1 -1
- package/dist/workerprocessbase.js +107 -0
- package/dist/workerprocessbase.js.map +1 -1
- package/package.json +1 -1
- package/runtest2.sh +1 -1
- package/src/ipcMessageHandler.ts +4 -2
- package/src/ipcMessageManager.ts +40 -4
- package/src/ipcMessageProcessorPrimary.ts +2 -1
- package/src/ipcMessageProcessorWorker.ts +2 -1
- package/src/redisMessageHandler.test.ts +4 -2
- package/src/redisMessageHandler.ts +155 -6
- package/src/testing/app.ts +192 -17
- package/src/workerprocessbase.ts +123 -2
- package/types/ipcMessageHandler.d.ts.map +1 -1
- package/types/ipcMessageManager.d.ts +1 -0
- package/types/ipcMessageManager.d.ts.map +1 -1
- package/types/ipcMessageProcessorPrimary.d.ts.map +1 -1
- package/types/ipcMessageProcessorWorker.d.ts.map +1 -1
- package/types/redisMessageHandler.d.ts +2 -0
- package/types/redisMessageHandler.d.ts.map +1 -1
- package/types/workerprocessbase.d.ts +15 -0
- package/types/workerprocessbase.d.ts.map +1 -1
package/dist/testing/app.js
CHANGED
|
@@ -12,9 +12,10 @@ const ipcMessageProcessorWorker_1 = require("./../ipcMessageProcessorWorker");
|
|
|
12
12
|
const stsutils_1 = require("@nsshunt/stsutils");
|
|
13
13
|
const ipcMessageProcessorPrimary_1 = require("./../ipcMessageProcessorPrimary");
|
|
14
14
|
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
-
const uuid_1 = require("uuid");
|
|
16
15
|
const redisMessageHandler_1 = require("./../redisMessageHandler");
|
|
17
16
|
const stsconfig_1 = require("@nsshunt/stsconfig");
|
|
17
|
+
const systeminformation_1 = __importDefault(require("systeminformation")); // https://systeminformation.io/
|
|
18
|
+
const network_1 = require("./../network");
|
|
18
19
|
const sleepVal = 0;
|
|
19
20
|
const maxLoop = 100;
|
|
20
21
|
const zzz = async () => {
|
|
@@ -155,11 +156,85 @@ const StartTestWorker = () => {
|
|
|
155
156
|
}
|
|
156
157
|
}, 1000);
|
|
157
158
|
};
|
|
158
|
-
const iterations =
|
|
159
|
+
const iterations = 0;
|
|
159
160
|
const delay = 100;
|
|
161
|
+
const GetNumCPUs = async () => {
|
|
162
|
+
// https://systeminformation.io/
|
|
163
|
+
const valueObject = {
|
|
164
|
+
cpu: '*'
|
|
165
|
+
};
|
|
166
|
+
const sysinfo = await systeminformation_1.default.get(valueObject);
|
|
167
|
+
let numCPUs = 2;
|
|
168
|
+
if (stsconfig_1.goptions.useCPUs > 0) {
|
|
169
|
+
if (stsconfig_1.goptions.useCPUs >= 1) {
|
|
170
|
+
numCPUs = stsconfig_1.goptions.useCPUs;
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
numCPUs = Math.round(sysinfo.cpu.cores * stsconfig_1.goptions.useCPUs);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
numCPUs = sysinfo.cpu.physicalCores;
|
|
178
|
+
}
|
|
179
|
+
return numCPUs;
|
|
180
|
+
};
|
|
181
|
+
const LogInfoMessage = (message) => {
|
|
182
|
+
console.log(message);
|
|
183
|
+
};
|
|
184
|
+
const LogSystemTelemetry = async () => {
|
|
185
|
+
// https://systeminformation.io/
|
|
186
|
+
const valueObject = {
|
|
187
|
+
system: '*',
|
|
188
|
+
osInfo: '*',
|
|
189
|
+
cpu: '*',
|
|
190
|
+
mem: '*',
|
|
191
|
+
dockerInfo: '*',
|
|
192
|
+
//dockerImages: '*',
|
|
193
|
+
dockerContainers: '*',
|
|
194
|
+
};
|
|
195
|
+
const sysinfo = await systeminformation_1.default.get(valueObject);
|
|
196
|
+
const numCPUs = await GetNumCPUs();
|
|
197
|
+
const hostname = sysinfo.osInfo.hostname;
|
|
198
|
+
const hostaddr = (0, network_1.GetFirstNetworkInterface)();
|
|
199
|
+
if (hostaddr !== null) {
|
|
200
|
+
LogInfoMessage(`Host Address: ${hostaddr}`);
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
LogInfoMessage(`Unknown Host Address.`);
|
|
204
|
+
}
|
|
205
|
+
LogInfoMessage(`Server starting with ${numCPUs} Cores/Threads`);
|
|
206
|
+
LogInfoMessage(`Hostname: ${hostname}`);
|
|
207
|
+
LogInfoMessage(`System: ${JSON.stringify(sysinfo.system)}`);
|
|
208
|
+
LogInfoMessage(`OS Info: ${JSON.stringify(sysinfo.osInfo)}`);
|
|
209
|
+
LogInfoMessage(`CPU: ${JSON.stringify(sysinfo.cpu)}`);
|
|
210
|
+
LogInfoMessage(`Memory: ${JSON.stringify(sysinfo.mem)}`);
|
|
211
|
+
const promArray = [];
|
|
212
|
+
sysinfo.dockerContainers.forEach((dc) => {
|
|
213
|
+
LogInfoMessage(dc.id);
|
|
214
|
+
const dcs = promArray.push(systeminformation_1.default.dockerContainerStats(dc.id));
|
|
215
|
+
console.log(dcs);
|
|
216
|
+
});
|
|
217
|
+
const dockerContainerStats = await Promise.all(promArray);
|
|
218
|
+
const sysInfo = {
|
|
219
|
+
hostname,
|
|
220
|
+
numCPUs,
|
|
221
|
+
hostaddr,
|
|
222
|
+
system: sysinfo.system,
|
|
223
|
+
osInfo: sysinfo.osInfo,
|
|
224
|
+
cpu: sysinfo.cpu,
|
|
225
|
+
mem: sysinfo.mem,
|
|
226
|
+
dockerInfo: sysinfo.dockerInfo,
|
|
227
|
+
//dockerImages: sysinfo.dockerImages,
|
|
228
|
+
dockerContainers: sysinfo.dockerContainers,
|
|
229
|
+
dockerContainerStats
|
|
230
|
+
};
|
|
231
|
+
console.log(sysInfo);
|
|
232
|
+
console.log(JSON.stringify(sysInfo));
|
|
233
|
+
};
|
|
160
234
|
if (node_cluster_1.default.isPrimary) {
|
|
161
235
|
new __1.MasterProcessBase((0, appConfig_1.ServiceConfigOptions)(true, node_cluster_1.default.isPrimary)).SetupServer();
|
|
162
236
|
//StartTestPrimary();
|
|
237
|
+
LogSystemTelemetry();
|
|
163
238
|
setTimeout(() => {
|
|
164
239
|
const p = {};
|
|
165
240
|
/*
|
|
@@ -181,43 +256,123 @@ if (node_cluster_1.default.isPrimary) {
|
|
|
181
256
|
p[worker.id] = p1;
|
|
182
257
|
}
|
|
183
258
|
*/
|
|
259
|
+
/*
|
|
260
|
+
const stsServiceControl: RedisMessageHandler = new RedisMessageHandler({
|
|
261
|
+
logger: defaultLogger,
|
|
262
|
+
role: 'SERVER',
|
|
263
|
+
redisUrl: goptions.imRedisMessageProcessorUrl,
|
|
264
|
+
namespace: 'stsServiceControl',
|
|
265
|
+
groups: [ ]
|
|
266
|
+
});
|
|
267
|
+
stsServiceControl.Start();
|
|
268
|
+
|
|
269
|
+
stsServiceControl.on('ping_ex', (pingData: JSONObject, callback: any) => {
|
|
270
|
+
console.log(chalk.yellow(`${process.pid}: stsServiceControl.on(ping): [${JSON.stringify(pingData)}]`));
|
|
271
|
+
callback({pingData, dateTime: new Date().getTime()})
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
setInterval(() => {
|
|
275
|
+
stsServiceControl.emit('GET_SYSTEM_TELEMETRY', { }, (response: any) => {
|
|
276
|
+
console.log(chalk.green(` ==>> ${process.pid}: Response(GET_SYSTEM_TELEMETRY): [${JSON.stringify(response)}]`));
|
|
277
|
+
});
|
|
278
|
+
}, 5000);
|
|
279
|
+
*/
|
|
184
280
|
const r1 = new redisMessageHandler_1.RedisMessageHandler({
|
|
185
281
|
logger: stsutils_1.defaultLogger,
|
|
186
282
|
role: 'SERVER',
|
|
187
283
|
redisUrl: stsconfig_1.goptions.imRedisMessageProcessorUrl,
|
|
284
|
+
namespace: 'mytestapp',
|
|
285
|
+
groups: []
|
|
286
|
+
});
|
|
287
|
+
r1.Start();
|
|
288
|
+
let i = 0;
|
|
289
|
+
let group = '';
|
|
290
|
+
const xxx = () => {
|
|
291
|
+
setTimeout(() => {
|
|
292
|
+
i++;
|
|
293
|
+
if (i % 2 === 0) {
|
|
294
|
+
group = 'even';
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
group = 'odd';
|
|
298
|
+
}
|
|
299
|
+
const emitobj = { group, i: i, a: 'a', b: 'b' };
|
|
300
|
+
r1.emit('fromprimaryredis', emitobj, (response) => {
|
|
301
|
+
console.log(chalk_1.default.cyan(`${process.pid}: Response(fromprimaryredis): [${JSON.stringify(response)}]`));
|
|
302
|
+
});
|
|
303
|
+
/*
|
|
304
|
+
const globalemitobj = { i: i, a: 'a', b: 'b' };
|
|
305
|
+
r1.emit('globalmessage', globalemitobj, (response: any) => {
|
|
306
|
+
console.log(chalk.cyan(`${process.pid}: Response(globalmessage): [${JSON.stringify(response)}]`));
|
|
307
|
+
});
|
|
308
|
+
*/
|
|
309
|
+
//xxx();
|
|
310
|
+
}, 2000);
|
|
311
|
+
};
|
|
312
|
+
xxx();
|
|
313
|
+
/*
|
|
314
|
+
const r1: RedisMessageHandler = new RedisMessageHandler({
|
|
315
|
+
logger: defaultLogger,
|
|
316
|
+
role: 'SERVER',
|
|
317
|
+
redisUrl: goptions.imRedisMessageProcessorUrl,
|
|
188
318
|
namespace: 'mytestapp'
|
|
189
319
|
});
|
|
190
320
|
r1.Start();
|
|
191
|
-
|
|
192
|
-
|
|
321
|
+
|
|
322
|
+
r1.on('fromworkerredis', (arg1: string, arg2: number, arg3: string, callback: any) => {
|
|
323
|
+
console.log(chalk.magenta(`${process.pid}: fromworkerredis.ON: [${arg1} ${arg2} ${arg3}]`));
|
|
193
324
|
//callback(null);
|
|
194
|
-
callback({
|
|
325
|
+
callback({status: `response message from event = fromworkerredis with args ${arg1} ${arg2} ${arg3}`})
|
|
195
326
|
});
|
|
327
|
+
|
|
328
|
+
|
|
196
329
|
setTimeout(async () => {
|
|
197
|
-
for (let i
|
|
198
|
-
|
|
199
|
-
Object.keys(p).forEach(async (pKey) => {
|
|
200
|
-
const emitobj = { i: i, a: 'a', b: 'b', worker: pKey };
|
|
201
|
-
console.log(chalk.green(`${process.pid}: emit event to worker: [${pKey}] fromprimary: [${JSON.stringify(emitobj)}`));
|
|
202
|
-
p[pKey].emit('fromprimary', emitobj, (response: any) => {
|
|
203
|
-
console.log(chalk.green(`${process.pid}: ${JSON.stringify(response)}`));
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
*/
|
|
330
|
+
for (let i=0; i < iterations; i++) {
|
|
331
|
+
|
|
207
332
|
const emitobj = { i: i, a: 'a', b: 'b' };
|
|
208
|
-
console.log(
|
|
209
|
-
r1.emit('fromprimaryredis', emitobj, (response) => {
|
|
210
|
-
console.log(
|
|
333
|
+
console.log(chalk.cyan(`${process.pid}: emit event fromprimaryredis fromprimary: [${JSON.stringify(emitobj)}`));
|
|
334
|
+
r1.emit('fromprimaryredis', emitobj, (response: any) => {
|
|
335
|
+
console.log(chalk.cyan(`${process.pid}: Response(fromprimaryredis): [${JSON.stringify(response)}]`));
|
|
211
336
|
});
|
|
212
|
-
|
|
337
|
+
|
|
338
|
+
await Sleep(delay);
|
|
213
339
|
}
|
|
340
|
+
|
|
214
341
|
}, 1000);
|
|
342
|
+
*/
|
|
215
343
|
}, 1000);
|
|
216
344
|
}
|
|
217
345
|
else {
|
|
218
346
|
new appWorkerWSS_1.WorkerProcess((0, appConfig_1.ServiceConfigOptions)(true, node_cluster_1.default.isPrimary)).SetupServer();
|
|
219
347
|
//StartTestWorker();
|
|
220
348
|
setTimeout(async () => {
|
|
349
|
+
let group = '';
|
|
350
|
+
if (process.pid % 2 === 0) {
|
|
351
|
+
group = 'even';
|
|
352
|
+
}
|
|
353
|
+
else {
|
|
354
|
+
group = 'odd';
|
|
355
|
+
}
|
|
356
|
+
const r1 = new redisMessageHandler_1.RedisMessageHandler({
|
|
357
|
+
logger: stsutils_1.defaultLogger,
|
|
358
|
+
role: 'CLIENT',
|
|
359
|
+
redisUrl: stsconfig_1.goptions.imRedisMessageProcessorUrl,
|
|
360
|
+
namespace: 'mytestapp',
|
|
361
|
+
groups: [group]
|
|
362
|
+
});
|
|
363
|
+
r1.Start();
|
|
364
|
+
r1.on('fromprimaryredis', (arg1, callback) => {
|
|
365
|
+
console.log(chalk_1.default.greenBright(` -->> ${process.pid}: fromprimaryredis.ON: [${JSON.stringify(arg1)}]`));
|
|
366
|
+
callback({
|
|
367
|
+
status: `PID: [${process.pid}]: response message from event = fromprimaryredis with args ${JSON.stringify(arg1)}`
|
|
368
|
+
});
|
|
369
|
+
});
|
|
370
|
+
r1.on('globalmessage', (arg1, callback) => {
|
|
371
|
+
console.log(chalk_1.default.greenBright(` -->> ${process.pid}: globalmessage.ON: [${JSON.stringify(arg1)}]`));
|
|
372
|
+
callback({
|
|
373
|
+
status: `PID: [${process.pid}]: response message from event = globalmessage with args ${JSON.stringify(arg1)}`
|
|
374
|
+
});
|
|
375
|
+
});
|
|
221
376
|
/*
|
|
222
377
|
const w1: IPCMessageHandler = new IPCMessageHandler({
|
|
223
378
|
logger: defaultLogger,
|
|
@@ -231,34 +386,33 @@ else {
|
|
|
231
386
|
callback({status: `response message from event = fromprimary with args ${JSON.stringify(arg1)}`})
|
|
232
387
|
});
|
|
233
388
|
*/
|
|
234
|
-
|
|
235
|
-
|
|
389
|
+
/*
|
|
390
|
+
const r1: RedisMessageHandler = new RedisMessageHandler({
|
|
391
|
+
logger: defaultLogger,
|
|
236
392
|
role: 'CLIENT',
|
|
237
|
-
redisUrl:
|
|
393
|
+
redisUrl: goptions.imRedisMessageProcessorUrl,
|
|
238
394
|
namespace: 'mytestapp'
|
|
239
395
|
});
|
|
240
396
|
r1.Start();
|
|
241
|
-
|
|
397
|
+
|
|
398
|
+
r1.on('fromprimaryredis', (arg1: JSONObject, callback: any) => {
|
|
242
399
|
//callback();
|
|
243
|
-
console.log(
|
|
244
|
-
callback({
|
|
400
|
+
console.log(chalk.yellow(`${process.pid}: fromprimaryredis.ON: [${JSON.stringify(arg1)}]`));
|
|
401
|
+
callback({status: `PID: [${process.pid}]: response message from event = fromprimaryredis with args ${JSON.stringify(arg1)}`})
|
|
245
402
|
});
|
|
403
|
+
|
|
246
404
|
setTimeout(async () => {
|
|
247
|
-
for (let i
|
|
248
|
-
const id = (
|
|
249
|
-
|
|
250
|
-
console.log(chalk.
|
|
251
|
-
|
|
252
|
-
console.log(chalk.
|
|
253
|
-
});
|
|
254
|
-
*/
|
|
255
|
-
console.log(chalk_1.default.green(`${process.pid}: emit event fromworkerredis: [${id} ${i} Hello]`));
|
|
256
|
-
r1.emit('fromworkerredis', id, i, 'Hello', (response) => {
|
|
257
|
-
console.log(chalk_1.default.green(`${process.pid}: Response(fromworkerredis): [${JSON.stringify(response)}]`));
|
|
405
|
+
for (let i=0; i < iterations; i++) {
|
|
406
|
+
const id = uuidv4();
|
|
407
|
+
|
|
408
|
+
console.log(chalk.green(`${process.pid}: emit event fromworkerredis: [${id} ${i} Hello]`));
|
|
409
|
+
r1.emit('fromworkerredis', id, i, 'Hello', (response: any) => {
|
|
410
|
+
console.log(chalk.green(`${process.pid}: Response(fromworkerredis): [${JSON.stringify(response)}]`));
|
|
258
411
|
});
|
|
259
|
-
await
|
|
412
|
+
await Sleep(delay);
|
|
260
413
|
}
|
|
261
414
|
}, 1000);
|
|
415
|
+
*/
|
|
262
416
|
}, 1000);
|
|
263
417
|
}
|
|
264
418
|
//# sourceMappingURL=app.js.map
|
package/dist/testing/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":";;;;;AAAA,wFAAwF,CAAE,UAAU;AACpG,2CAAkD;AAClD,4BAAwC;AACxC,iDAA8C;AAE9C,gEAA+C;AAE/C,8EAA0E;AAC1E,gDAAqE;AAErE,gFAA4E;AAI5E,kDAA0B;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":";;;;;AAAA,wFAAwF,CAAE,UAAU;AACpG,2CAAkD;AAClD,4BAAwC;AACxC,iDAA8C;AAE9C,gEAA+C;AAE/C,8EAA0E;AAC1E,gDAAqE;AAErE,gFAA4E;AAI5E,kDAA0B;AAK1B,kEAA8D;AAC9D,kDAA6C;AAE7C,0EAAkC,CAAC,gCAAgC;AACnE,0CAAuD;AAEvD,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,OAAO,GAAG,GAAG,CAAC;AAEpB,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;IACnB,MAAM,GAAG,GAAiC,EAAG,CAAC;IAC9C,KAAK,MAAM,EAAE,IAAI,sBAAO,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,sBAAO,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC;QAC7C,MAAM,EAAE,GAAG,IAAI,uDAA0B,CAAC;YACtC,MAAM,EAAE,wBAAa;YACrB,SAAS,EAAE,KAAK;SACnB,CAAC,CAAA;QACF,EAAE,CAAC,KAAK,CAAC,sBAAO,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAA0B,EAAG,CAAC;IAC7C,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,EAAC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAC,CAAC,CAAC,CAAC,CAAC;IACjF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QACtD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IAC5F,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;AACL,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,GAAG,EAAE;IAC1B,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,KAAK,MAAM,EAAE,IAAI,sBAAO,CAAC,OAAO,EAAE,CAAC;YAC/B,MAAM,EAAE,GAAG,IAAI,uDAA0B,CAAC;gBACtC,MAAM,EAAE,wBAAa;gBACrB,SAAS,EAAE,OAAO;gBAClB,cAAc,EAAE,KAAK,EAAE,OAAuC,EAAE,EAAE;oBAC9D,OAAO;wBACH,GAAG,EAAE,kBAAkB,OAAO,CAAC,GAAG,GAAG;wBACrC,OAAO,EAAE,OAAO,CAAC,cAAc;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;qBACnB,CAAC;gBACN,CAAC;aACJ,CAAC,CAAA;YAEF,MAAM,EAAE,GAAG,IAAI,uDAA0B,CAAC;gBACtC,MAAM,EAAE,wBAAa;gBACrB,SAAS,EAAE,OAAO;gBAClB,cAAc,EAAE,KAAK,EAAE,OAAuC,EAAE,EAAE;oBAC9D,OAAO;wBACH,GAAG,EAAE,kBAAkB,OAAO,CAAC,GAAG,GAAG;wBACrC,OAAO,EAAE,OAAO,CAAC,cAAc;wBAC/B,MAAM,EAAE,QAAQ;wBAChB,GAAG,EAAE,OAAO,CAAC,GAAG;qBACnB,CAAC;gBACN,CAAC;aACJ,CAAC,CAAA;YAEF,EAAE,CAAC,KAAK,CAAC,sBAAO,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC,CAAC;YACxC,EAAE,CAAC,KAAK,CAAC,sBAAO,CAAC,OAAO,CAAC,EAAE,CAAW,CAAC,CAAC;YAExC,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC;wBACjC,KAAK,EAAE,qBAAqB;wBAC5B,KAAK,EAAE,CAAC;qBACX,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC;wBACjC,KAAK,EAAE,qBAAqB;wBAC5B,KAAK,EAAE,CAAC;qBACX,CAAC,CAAC;oBAEH,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAC5D,OAAO,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBAE5D,MAAM,IAAA,gBAAK,EAAC,QAAQ,CAAC,CAAC;gBAC1B,CAAC;YACL,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC;QAED,GAAG,EAAE,CAAC;IAEV,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,GAAG,EAAE;IACzB,MAAM,EAAE,GAAG,IAAI,qDAAyB,CAAC;QACrC,MAAM,EAAE,wBAAa;QACrB,SAAS,EAAE,OAAO;QAClB,6BAA6B,EAAE,IAAI;QACnC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,OAAO;gBACH,IAAI,EAAE,iBAAiB,OAAO,CAAC,GAAG,GAAG;gBACrC,QAAQ,EAAE,OAAO,CAAC,cAAc;gBAChC,IAAI,EAAE,OAAO,CAAC,GAAG;aACpB,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,IAAI,qDAAyB,CAAC;QACrC,MAAM,EAAE,wBAAa;QACrB,SAAS,EAAE,OAAO;QAClB,6BAA6B,EAAE,IAAI;QACnC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,OAAO;gBACH,IAAI,EAAE,iBAAiB,OAAO,CAAC,GAAG,GAAG;gBACrC,QAAQ,EAAE,OAAO,CAAC,cAAc;gBAChC,IAAI,EAAE,OAAO,CAAC,GAAG;aACpB,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IAEF,MAAM,EAAE,GAAG,IAAI,qDAAyB,CAAC;QACrC,MAAM,EAAE,wBAAa;QACrB,SAAS,EAAE,KAAK;QAChB,6BAA6B,EAAE,IAAI;QACnC,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC9B,QAAQ,OAAO,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;gBACrC,KAAK,MAAM;oBAAG,OAAO;wBACjB,IAAI,EAAE,2BAA2B,OAAO,CAAC,GAAG,GAAG;wBAC/C,QAAQ,EAAE,OAAO,CAAC,cAAc;wBAChC,IAAI,EAAE,OAAO,CAAC,GAAG;qBACpB,CAAA;oBACG,MAAM;gBACV,KAAK,MAAM;oBACP,OAAO;wBACH,IAAI,EAAE,2BAA2B,OAAO,CAAC,GAAG,GAAG;wBAC/C,QAAQ,EAAE,OAAO,CAAC,cAAc;wBAChC,IAAI,EAAE,OAAO,CAAC,GAAG;qBACpB,CAAA;oBACD,MAAM;YACV,CAAC;YACD,OAAO;gBACH,IAAI,EAAE,iCAAiC,OAAO,CAAC,GAAG,GAAG;gBACrD,QAAQ,EAAE,OAAO,CAAC,cAAc;gBAChC,IAAI,EAAE,OAAO,CAAC,GAAG;aACpB,CAAA;QACL,CAAC;KACJ,CAAC,CAAA;IAEF,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,UAAU,CAAC,KAAK,IAAI,EAAE;QAClB,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC;gBACjC,MAAM,EAAC,kBAAkB,CAAC,EAAE;aAC/B,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAE9E,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,WAAW,CAAC;gBACjC,MAAM,EAAC,kBAAkB,CAAC,EAAE;aAC/B,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,SAAS,OAAO,CAAC,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAE9E,MAAM,IAAA,gBAAK,EAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC,CAAA;AAED,MAAM,UAAU,GAAG,CAAC,CAAC;AACrB,MAAM,KAAK,GAAG,GAAG,CAAC;AAElB,MAAM,UAAU,GAAG,KAAK,IAAqB,EAAE;IAC3C,gCAAgC;IAChC,MAAM,WAAW,GAAG;QAChB,GAAG,EAAE,GAAG;KACX,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,2BAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,oBAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QACvB,IAAI,oBAAQ,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,oBAAQ,CAAC,OAAO,CAAC;QAC/B,CAAC;aAAM,CAAC;YACJ,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,oBAAQ,CAAC,OAAO,CAAC,CAAC;QAC/D,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IACxC,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAA;AAED,MAAM,cAAc,GAAG,CAAC,OAAe,EAAE,EAAE;IACvC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;IAClC,gCAAgC;IAChC,MAAM,WAAW,GAAG;QAChB,MAAM,EAAE,GAAG;QACX,MAAM,EAAE,GAAG;QACX,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,GAAG;QACR,UAAU,EAAE,GAAG;QACf,oBAAoB;QACpB,gBAAgB,EAAE,GAAG;KACxB,CAAA;IAED,MAAM,OAAO,GAAG,MAAM,2BAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,UAAU,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC;IAEzC,MAAM,QAAQ,GAAG,IAAA,kCAAwB,GAAE,CAAC;IAC5C,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACpB,cAAc,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;IAChD,CAAC;SAAM,CAAC;QACJ,cAAc,CAAC,uBAAuB,CAAC,CAAC;IAC5C,CAAC;IACD,cAAc,CAAC,wBAAwB,OAAO,gBAAgB,CAAC,CAAC;IAEhE,cAAc,CAAC,aAAa,QAAQ,EAAE,CAAC,CAAC;IACxC,cAAc,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5D,cAAc,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7D,cAAc,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtD,cAAc,CAAC,WAAW,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEzD,MAAM,SAAS,GAAmB,EAAG,CAAC;IAEtC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAmB,EAAE,EAAE;QACrD,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,2BAAE,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG;QACZ,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,qCAAqC;QACrC,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;QAC1C,oBAAoB;KACvB,CAAA;IAED,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAErB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;AACzC,CAAC,CAAA;AAED,IAAI,sBAAO,CAAC,SAAS,EAAE,CAAC;IACpB,IAAI,qBAAiB,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,sBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IACnF,qBAAqB;IAErB,kBAAkB,EAAE,CAAC;IAErB,UAAU,CAAC,GAAG,EAAE;QACZ,MAAM,CAAC,GAAsC,EAAG,CAAC;QACjD;;;;;;;;;;;;;;;;;;UAkBE;QAEF;;;;;;;;;;;;;;;;;;;;UAoBE;QAIF,MAAM,EAAE,GAAwB,IAAI,yCAAmB,CAAC;YACpD,MAAM,EAAE,wBAAa;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oBAAQ,CAAC,0BAA0B;YAC7C,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,EAAG;SACd,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QAIX,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,GAAG,GAAG,GAAG,EAAE;YACb,UAAU,CAAC,GAAG,EAAE;gBAEZ,CAAC,EAAE,CAAC;gBAEJ,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;oBACd,KAAK,GAAG,MAAM,CAAA;gBAClB,CAAC;qBAAM,CAAC;oBACJ,KAAK,GAAG,KAAK,CAAA;gBACjB,CAAC;gBAED,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;gBAChD,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,OAAO,EAAE,CAAC,QAAa,EAAE,EAAE;oBACnD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,GAAG,kCAAkC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzG,CAAC,CAAC,CAAC;gBAEH;;;;;kBAKE;gBAEF,QAAQ;YACZ,CAAC,EAAE,IAAI,CAAC,CAAC;QACb,CAAC,CAAA;QACD,GAAG,EAAE,CAAC;QAMN;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA6BE;IACN,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;KAAM,CAAC;IACJ,IAAI,4BAAa,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,sBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/E,oBAAoB;IAEpB,UAAU,CAAC,KAAK,IAAI,EAAE;QAElB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,KAAK,GAAG,MAAM,CAAA;QAClB,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,KAAK,CAAA;QACjB,CAAC;QAED,MAAM,EAAE,GAAwB,IAAI,yCAAmB,CAAC;YACpD,MAAM,EAAE,wBAAa;YACrB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oBAAQ,CAAC,0BAA0B;YAC7C,SAAS,EAAE,WAAW;YACtB,MAAM,EAAE,CAAE,KAAK,CAAE;SACpB,CAAC,CAAC;QACH,EAAE,CAAC,KAAK,EAAE,CAAC;QAEX,EAAE,CAAC,EAAE,CAAC,kBAAkB,EAAE,CAAC,IAAgB,EAAE,QAAa,EAAE,EAAE;YAC1D,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,WAAW,CAAC,WAAW,OAAO,CAAC,GAAG,2BAA2B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACzG,QAAQ,CAAE;gBACN,MAAM,EAAE,SAAS,OAAO,CAAC,GAAG,+DAA+D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;aACpH,CAAC,CAAA;QACN,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,IAAgB,EAAE,QAAa,EAAE,EAAE;YACvD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,WAAW,CAAC,WAAW,OAAO,CAAC,GAAG,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACtG,QAAQ,CAAE;gBACN,MAAM,EAAE,SAAS,OAAO,CAAC,GAAG,4DAA4D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;aACjH,CAAC,CAAA;QACN,CAAC,CAAC,CAAC;QAGH;;;;;;;;;;;;UAYE;QAEF;;;;;;;;;;;;;;;;;;;;;;;;;;UA0BE;IACN,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC"}
|
|
@@ -12,6 +12,9 @@ const server_1 = require("./server");
|
|
|
12
12
|
const serverprocessbase_1 = require("./serverprocessbase");
|
|
13
13
|
const uuid_1 = require("uuid");
|
|
14
14
|
const stsTransportLoggerWinston_1 = require("./stsTransportLoggerWinston");
|
|
15
|
+
const stsconfig_1 = require("@nsshunt/stsconfig");
|
|
16
|
+
const systeminformation_1 = __importDefault(require("systeminformation")); // https://systeminformation.io/
|
|
17
|
+
const network_1 = require("./network");
|
|
15
18
|
/**
|
|
16
19
|
* todo
|
|
17
20
|
* @typedef {Object} options - todo
|
|
@@ -20,6 +23,10 @@ const stsTransportLoggerWinston_1 = require("./stsTransportLoggerWinston");
|
|
|
20
23
|
class WorkerProcessBase extends serverprocessbase_1.ServerProcessBase {
|
|
21
24
|
#inFlightMessage = {};
|
|
22
25
|
#requestResponseMessageTimeout = 2000; //@@ config
|
|
26
|
+
#redisMessageHandler = null;
|
|
27
|
+
#redisMessageHandlerPing = 1000;
|
|
28
|
+
#pingTimeout = null;
|
|
29
|
+
#instanceId = (0, uuid_1.v4)();
|
|
23
30
|
constructor(options) {
|
|
24
31
|
super(options);
|
|
25
32
|
}
|
|
@@ -116,6 +123,62 @@ class WorkerProcessBase extends serverprocessbase_1.ServerProcessBase {
|
|
|
116
123
|
this.SetupServerEx();
|
|
117
124
|
}, 100);
|
|
118
125
|
};
|
|
126
|
+
GetNumCPUs = async () => {
|
|
127
|
+
// https://systeminformation.io/
|
|
128
|
+
const valueObject = {
|
|
129
|
+
cpu: '*'
|
|
130
|
+
};
|
|
131
|
+
const sysinfo = await systeminformation_1.default.get(valueObject);
|
|
132
|
+
let numCPUs = 2;
|
|
133
|
+
if (stsconfig_1.goptions.useCPUs > 0) {
|
|
134
|
+
if (stsconfig_1.goptions.useCPUs >= 1) {
|
|
135
|
+
numCPUs = stsconfig_1.goptions.useCPUs;
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
numCPUs = Math.round(sysinfo.cpu.cores * stsconfig_1.goptions.useCPUs);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
numCPUs = sysinfo.cpu.physicalCores;
|
|
143
|
+
}
|
|
144
|
+
return numCPUs;
|
|
145
|
+
};
|
|
146
|
+
GetSystemTelemetry = async () => {
|
|
147
|
+
// https://systeminformation.io/
|
|
148
|
+
const valueObject = {
|
|
149
|
+
system: '*',
|
|
150
|
+
osInfo: '*',
|
|
151
|
+
cpu: '*',
|
|
152
|
+
mem: '*',
|
|
153
|
+
dockerInfo: '*',
|
|
154
|
+
//dockerImages: '*',
|
|
155
|
+
dockerContainers: '*',
|
|
156
|
+
};
|
|
157
|
+
const sysinfo = await systeminformation_1.default.get(valueObject);
|
|
158
|
+
const numCPUs = await this.GetNumCPUs();
|
|
159
|
+
const hostname = sysinfo.osInfo.hostname;
|
|
160
|
+
const hostaddr = (0, network_1.GetFirstNetworkInterface)();
|
|
161
|
+
const promArray = [];
|
|
162
|
+
sysinfo.dockerContainers.forEach((dc) => {
|
|
163
|
+
const dcs = promArray.push(systeminformation_1.default.dockerContainerStats(dc.id));
|
|
164
|
+
console.log(dcs);
|
|
165
|
+
});
|
|
166
|
+
const dockerContainerStats = await Promise.all(promArray);
|
|
167
|
+
const sysInfo = {
|
|
168
|
+
instanceId: this.#instanceId,
|
|
169
|
+
hostname,
|
|
170
|
+
numCPUs,
|
|
171
|
+
hostaddr,
|
|
172
|
+
system: sysinfo.system,
|
|
173
|
+
osInfo: sysinfo.osInfo,
|
|
174
|
+
cpu: sysinfo.cpu,
|
|
175
|
+
mem: sysinfo.mem,
|
|
176
|
+
dockerInfo: sysinfo.dockerInfo,
|
|
177
|
+
dockerContainers: sysinfo.dockerContainers,
|
|
178
|
+
dockerContainerStats
|
|
179
|
+
};
|
|
180
|
+
return sysInfo;
|
|
181
|
+
};
|
|
119
182
|
SetupServerEx = async () => {
|
|
120
183
|
this.ProcessStartup();
|
|
121
184
|
if (this.options.expressServerRouteFactory || this.options.expressServerRouteStaticFactory) {
|
|
@@ -172,9 +235,53 @@ class WorkerProcessBase extends serverprocessbase_1.ServerProcessBase {
|
|
|
172
235
|
await this.Terminate(true, true);
|
|
173
236
|
});
|
|
174
237
|
await this.SetupSTSServer();
|
|
238
|
+
/*
|
|
239
|
+
this.#redisMessageHandler = new RedisMessageHandler({
|
|
240
|
+
logger: this.options.logger,
|
|
241
|
+
role: 'CLIENT',
|
|
242
|
+
redisUrl: goptions.imRedisMessageProcessorUrl,
|
|
243
|
+
namespace: 'stsServiceControl',
|
|
244
|
+
groups: [ ]
|
|
245
|
+
});
|
|
246
|
+
this.#redisMessageHandler.Start();
|
|
247
|
+
|
|
248
|
+
const ping = () => {
|
|
249
|
+
this.#pingTimeout = setTimeout(() => {
|
|
250
|
+
const pingData = {
|
|
251
|
+
instanceId: this.#instanceId
|
|
252
|
+
}
|
|
253
|
+
if (this.#redisMessageHandler) {
|
|
254
|
+
this.#redisMessageHandler.emit('ping_ex', pingData, (response: any) => {
|
|
255
|
+
console.log(chalk.cyan(` ==>> ${process.pid}: Response(ping): [${JSON.stringify(response)}]`));
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
ping();
|
|
259
|
+
}, this.#redisMessageHandlerPing).unref();
|
|
260
|
+
}
|
|
261
|
+
ping();
|
|
262
|
+
*/
|
|
263
|
+
// this.#redisMessageHandler.on('GET_SYSTEM_TELEMETRY', async (getSystemTelemetryCommand: JSONObject, callback: any) => {
|
|
264
|
+
// callback({ instanceId: this.#instanceId, process: process.pid, systemTelemetry: getSystemTelemetryCommand });
|
|
265
|
+
/*
|
|
266
|
+
if (getSystemTelemetryCommand.instanceId.localeCompare(this.#instanceId) === 0) {
|
|
267
|
+
const systemTelemetry = await this.GetSystemTelemetry();
|
|
268
|
+
callback({ systemTelemetry });
|
|
269
|
+
} else {
|
|
270
|
+
callback({ systemTelemetry: null });
|
|
271
|
+
}
|
|
272
|
+
*/
|
|
273
|
+
// });
|
|
175
274
|
this.WorkerStarted();
|
|
176
275
|
this.LogInfoMessage(chalk_1.default.green(`Worker process:${process.pid} started`));
|
|
177
276
|
};
|
|
277
|
+
ProcessTerminate() {
|
|
278
|
+
//this.#redisMessageHandler?.off()
|
|
279
|
+
if (this.#pingTimeout) {
|
|
280
|
+
clearTimeout(this.#pingTimeout);
|
|
281
|
+
}
|
|
282
|
+
this.#redisMessageHandler?.Stop();
|
|
283
|
+
return super.ProcessTerminate();
|
|
284
|
+
}
|
|
178
285
|
}
|
|
179
286
|
exports.WorkerProcessBase = WorkerProcessBase;
|
|
180
287
|
//# sourceMappingURL=workerprocessbase.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,kDAA0B;AAE1B,gEAA2E;AAG3E,+CAAiH;AACjH,qCAA4C;AAC5C,2DAAuD;AAEvD,+BAAoC;AAEpC,2EAAuE;
|
|
1
|
+
{"version":3,"file":"workerprocessbase.js","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/runtest2.sh
CHANGED
package/src/ipcMessageHandler.ts
CHANGED
|
@@ -54,7 +54,8 @@ export class IPCMessageHandler extends TinyEmitter {
|
|
|
54
54
|
messageReceiverStop: (options: any) => {
|
|
55
55
|
const worker = (options.worker as Worker);
|
|
56
56
|
worker.off('message', (payload) => this.#ipcMessageManager?.ProcessMessage(payload, { worker }));
|
|
57
|
-
}
|
|
57
|
+
},
|
|
58
|
+
groups: [ ]
|
|
58
59
|
}
|
|
59
60
|
this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
|
|
60
61
|
}
|
|
@@ -79,7 +80,8 @@ export class IPCMessageHandler extends TinyEmitter {
|
|
|
79
80
|
},
|
|
80
81
|
messageReceiverStop: (options: any) => {
|
|
81
82
|
process.off('message', (payload) => this.#ipcMessageManager?.ProcessMessage(payload, options));
|
|
82
|
-
}
|
|
83
|
+
},
|
|
84
|
+
groups: [ ]
|
|
83
85
|
}
|
|
84
86
|
this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
|
|
85
87
|
}
|
package/src/ipcMessageManager.ts
CHANGED
|
@@ -12,6 +12,7 @@ export interface IPCMessageManagerOptions {
|
|
|
12
12
|
requestResponseMessageTimeout: number
|
|
13
13
|
namespace: string
|
|
14
14
|
role: 'SERVER' | 'CLIENT'
|
|
15
|
+
groups: string[]
|
|
15
16
|
messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => void
|
|
16
17
|
ProcessRequestMessage: (payload: IIPCMessageProcessorIPCPayload, options: any) => Promise<JSONObject>
|
|
17
18
|
ProcessResponseMessage?: (reesponses: Record<string, IIPCMessageProcessorIPCPayload>, options: any) => Promise<boolean>
|
|
@@ -100,28 +101,43 @@ export class IPCMessageManager
|
|
|
100
101
|
}
|
|
101
102
|
|
|
102
103
|
#ProcessMessage = async (msg: any, options: any): Promise<void> => {
|
|
104
|
+
//console.log(chalk.grey(`#ProcessMessage`));
|
|
103
105
|
if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
|
|
104
106
|
const message = (msg as IIPCMessageProcessorIPCPayload);
|
|
105
107
|
if (this.#inflightMessages[message.messageId]) {
|
|
106
108
|
const inFlightMessageRecord: IIPCMessageProcessorWorkerRecord = this.#inflightMessages[message.messageId];
|
|
107
109
|
inFlightMessageRecord.responses[message.senderId ] = { ...message };
|
|
108
110
|
let completed = true; // Defaults to true
|
|
111
|
+
|
|
112
|
+
//console.log(chalk.grey(`#ProcessMessage:2`));
|
|
113
|
+
|
|
109
114
|
if (this.#options.ProcessResponseMessage) {
|
|
115
|
+
|
|
116
|
+
if (msg.requestPayload.__eventName.localeCompare('ping') !== 0) {
|
|
117
|
+
console.log(chalk.grey(`#ProcessMessage:3: [${JSON.stringify(msg.requestPayload)}]`));
|
|
118
|
+
}
|
|
119
|
+
|
|
110
120
|
completed = await this.#options.ProcessResponseMessage(inFlightMessageRecord.responses, options);
|
|
111
121
|
if (completed) {
|
|
122
|
+
//console.log(chalk.grey(`#ProcessMessage:3.1`));
|
|
112
123
|
inFlightMessageRecord.endTime = performance.now();
|
|
113
124
|
clearTimeout(inFlightMessageRecord.timeout as NodeJS.Timer);
|
|
114
125
|
inFlightMessageRecord.callBack({
|
|
115
126
|
responsePayload: Object.values(inFlightMessageRecord.responses).map(r => r.responsePayload)
|
|
116
127
|
} as any, options) //
|
|
117
128
|
delete this.#inflightMessages[message.messageId];
|
|
129
|
+
|
|
130
|
+
//console.log(chalk.grey(`this.#inflightMessages.length = ${Object.keys(this.#inflightMessages).length}`));
|
|
118
131
|
}
|
|
119
132
|
} else if (completed) {
|
|
133
|
+
//console.log(chalk.grey(`#ProcessMessage:4`));
|
|
120
134
|
inFlightMessageRecord.endTime = performance.now();
|
|
121
135
|
clearTimeout(inFlightMessageRecord.timeout as NodeJS.Timer);
|
|
122
136
|
inFlightMessageRecord.callBack(message, options) // inFlightMessageRecord.responses
|
|
123
137
|
//@@inFlightMessageRecord.callBack(Object.values(inFlightMessageRecord.responses), options) //
|
|
124
138
|
delete this.#inflightMessages[message.messageId];
|
|
139
|
+
} else {
|
|
140
|
+
//console.log(chalk.grey(`#ProcessMessage:5`));
|
|
125
141
|
}
|
|
126
142
|
} else {
|
|
127
143
|
//throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`); //@@
|
|
@@ -153,10 +169,30 @@ export class IPCMessageManager
|
|
|
153
169
|
if ((msg.header as string).includes(checkName)) {
|
|
154
170
|
const message = (msg as IIPCMessageProcessorIPCPayload);
|
|
155
171
|
if (msg.messageType.localeCompare('REQUEST') === 0) {
|
|
156
|
-
|
|
157
|
-
message.
|
|
158
|
-
|
|
159
|
-
|
|
172
|
+
let processMessage = true;
|
|
173
|
+
if (message.requestPayload.args.length > 0 && message.requestPayload.args[0].group) {
|
|
174
|
+
const group = message.requestPayload.args[0].group;
|
|
175
|
+
console.log(chalk.green(`${process.pid}:ProcessMessage(): Processor Options Groups: [${this.#options.groups}] request group: [${group}]`));
|
|
176
|
+
processMessage = (this.#options.groups.indexOf(group) === -1) ? false : true;
|
|
177
|
+
if (processMessage === false) {
|
|
178
|
+
console.log(chalk.red(`${process.pid}:ProcessMessage(): Skipping this message: Not in correct group: [${group}]`));
|
|
179
|
+
} else {
|
|
180
|
+
console.log(chalk.yellow(`${process.pid}:ProcessMessage(): Will process this message: [${group}]`));
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
if (processMessage) {
|
|
185
|
+
message.responsePayload = await this.#options.ProcessRequestMessage(message, options);
|
|
186
|
+
message.senderId = this.#id;
|
|
187
|
+
message.messageType = 'RESPONSE';
|
|
188
|
+
|
|
189
|
+
if (message.requestPayload.__eventName.localeCompare('ping') !== 0) {
|
|
190
|
+
console.log(chalk.grey(`${process.pid}:ProcessMessage(): Sending response: [${JSON.stringify(message.responsePayload)}]`));
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
this.#options.messageSender(message, options);
|
|
194
|
+
}
|
|
195
|
+
|
|
160
196
|
} else {
|
|
161
197
|
// Received a response (to my request)
|
|
162
198
|
this.#ProcessMessage(msg, options);
|
|
@@ -42,7 +42,8 @@ export class IPCMessageProcessorPrimary
|
|
|
42
42
|
messageReceiverStop: (options: any) => {
|
|
43
43
|
const worker = (options.worker as Worker);
|
|
44
44
|
worker.off('message', (payload) => this.#ipcMessageManager.ProcessMessage(payload, { worker }));
|
|
45
|
-
}
|
|
45
|
+
},
|
|
46
|
+
groups: [ ]
|
|
46
47
|
}
|
|
47
48
|
this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
|
|
48
49
|
}
|