@nsshunt/stsappframework 3.1.209 → 3.1.211
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/build.sh +5 -0
- package/dist/commonTypes.js.map +1 -1
- package/dist/index.js +0 -5
- package/dist/index.js.map +1 -1
- package/dist/masterprocessbase.js +3 -53
- package/dist/masterprocessbase.js.map +1 -1
- package/dist/processbase.js +4 -17
- package/dist/processbase.js.map +1 -1
- package/dist/testing/app.js +0 -457
- package/dist/testing/app.js.map +1 -1
- package/dist/workerprocessbase.js +1 -36
- package/dist/workerprocessbase.js.map +1 -1
- package/package.json +14 -13
- package/src/commonTypes.ts +2 -33
- package/src/index.ts +0 -5
- package/src/masterprocessbase.ts +4 -18
- package/src/processbase.ts +7 -22
- package/src/testing/app.ts +1 -530
- package/src/workerprocessbase.ts +1 -40
- package/types/commonTypes.d.ts +0 -23
- package/types/commonTypes.d.ts.map +1 -1
- package/types/index.d.ts +0 -5
- package/types/index.d.ts.map +1 -1
- package/types/masterprocessbase.d.ts.map +1 -1
- package/types/processbase.d.ts +0 -2
- package/types/processbase.d.ts.map +1 -1
- package/types/workerprocessbase.d.ts.map +1 -1
- package/dist/ipcMessageHandler.js +0 -189
- package/dist/ipcMessageHandler.js.map +0 -1
- package/dist/ipcMessageManager.js +0 -146
- package/dist/ipcMessageManager.js.map +0 -1
- package/dist/ipcMessageProcessorPrimary.js +0 -65
- package/dist/ipcMessageProcessorPrimary.js.map +0 -1
- package/dist/ipcMessageProcessorWorker.js +0 -61
- package/dist/ipcMessageProcessorWorker.js.map +0 -1
- package/dist/messagehandling/webWorkerMessageHandler.js +0 -280
- package/dist/messagehandling/webWorkerMessageHandler.js.map +0 -1
- package/dist/messagehandling/webWorkerSupport.js +0 -62
- package/dist/messagehandling/webWorkerSupport.js.map +0 -1
- package/dist/redisMessageHandler.js +0 -305
- package/dist/redisMessageHandler.js.map +0 -1
- package/dist/redisMessageHandler.test.js +0 -129
- package/dist/redisMessageHandler.test.js.map +0 -1
- package/dist/testing/app_ipc_legacy.js +0 -84
- package/dist/testing/app_ipc_legacy.js.map +0 -1
- package/dist/testing/app_ipcex.js +0 -69
- package/dist/testing/app_ipcex.js.map +0 -1
- package/dist/testing/app_ww.js +0 -54
- package/dist/testing/app_ww.js.map +0 -1
- package/src/ipcMessageHandler.ts +0 -201
- package/src/ipcMessageManager.ts +0 -171
- package/src/ipcMessageProcessorPrimary.ts +0 -76
- package/src/ipcMessageProcessorWorker.ts +0 -70
- package/src/messagehandling/webWorkerMessageHandler.ts +0 -341
- package/src/messagehandling/webWorkerSupport.ts +0 -66
- package/src/redisMessageHandler.test.ts +0 -157
- package/src/redisMessageHandler.ts +0 -371
- package/src/testing/app_ipc_legacy.ts +0 -87
- package/src/testing/app_ipcex.ts +0 -68
- package/src/testing/app_ww.ts +0 -68
- package/types/ipcMessageHandler.d.ts +0 -30
- package/types/ipcMessageHandler.d.ts.map +0 -1
- package/types/ipcMessageManager.d.ts +0 -30
- package/types/ipcMessageManager.d.ts.map +0 -1
- package/types/ipcMessageProcessorPrimary.d.ts +0 -26
- package/types/ipcMessageProcessorPrimary.d.ts.map +0 -1
- package/types/ipcMessageProcessorWorker.d.ts +0 -25
- package/types/ipcMessageProcessorWorker.d.ts.map +0 -1
- package/types/messagehandling/webWorkerMessageHandler.d.ts +0 -52
- package/types/messagehandling/webWorkerMessageHandler.d.ts.map +0 -1
- package/types/messagehandling/webWorkerSupport.d.ts +0 -6
- package/types/messagehandling/webWorkerSupport.d.ts.map +0 -1
- package/types/redisMessageHandler.d.ts +0 -51
- package/types/redisMessageHandler.d.ts.map +0 -1
- package/types/redisMessageHandler.test.d.ts +0 -2
- package/types/redisMessageHandler.test.d.ts.map +0 -1
- package/types/testing/app_ipc_legacy.d.ts +0 -2
- package/types/testing/app_ipc_legacy.d.ts.map +0 -1
- package/types/testing/app_ipcex.d.ts +0 -2
- package/types/testing/app_ipcex.d.ts.map +0 -1
- package/types/testing/app_ww.d.ts +0 -2
- package/types/testing/app_ww.d.ts.map +0 -1
package/types/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,YAAY,CAAA;AAC1B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,qBAAqB,CAAA;AACnC,cAAc,wBAAwB,CAAA;AACtC,cAAc,wBAAwB,CAAA;AACtC,cAAc,mBAAmB,CAAA;AACjC,cAAc,sBAAsB,CAAA;AACpC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA;AACrC,cAAc,4BAA4B,CAAA;AAC1C,cAAc,gCAAgC,CAAA;AAC9C,cAAc,mCAAmC,CAAA;AACjD,cAAc,iCAAiC,CAAA;AAC/C,cAAc,kCAAkC,CAAA;AAChD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,uBAAuB,CAAA;AACrC,cAAc,6BAA6B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterprocessbase.d.ts","sourceRoot":"","sources":["../src/masterprocessbase.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAqB,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"masterprocessbase.d.ts","sourceRoot":"","sources":["../src/masterprocessbase.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAiB,MAAM,eAAe,CAAC;AAElF,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAA;AACjE,OAAO,EAAE,iBAAiB,EAAqB,MAAM,eAAe,CAAA;AAOpE,qBAAa,iBAAkB,SAAQ,WAAY,YAAW,kBAAkB;;gBAiBhE,OAAO,EAAE,cAAc;IAmB1B,0BAA0B,IAAI,IAAI;IAQlC,wBAAwB,IAAI,qBAAqB;IAS1D;;;OAGA;IAEA,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG;IAkI7C,WAAW,sBAKV;IAgCD,UAAU,OAAQ,MAAM,UAAU,MAAM,CAAC,OAAO,uBAAuB,GAAG,eAAe,OAAO,gBAAgB,OAAO,KAAG,OAAO,CA6BhI;IAED,WAAW,WAAY,MAAM,CAAC,OAAO,YAAY,OAAO,KAAG,IAAI,CAkB9D;IAUD,UAAU,QAAO,IAAI,CAIpB;IAED,UAAU,QAAO,IAAI,CAIpB;IAGD,SAAS,YAAa,GAAG,KAAG,MAAM,CAOjC;IAEK,iBAAiB,CAAC,iBAAiB,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAsGzF,aAAa,IAAI,IAAI;IASrB,IAAa,YAAY,IAAI,OAAO,CAEnC;IAED,aAAa,sBAgLZ;IAED,sBAAsB,YAAa,GAAG,QAAQ,GAAG,UAahD;CA+CJ"}
|
package/types/processbase.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { Gauge, InstrumentBaseTelemetry } from '@nsshunt/stsobservability';
|
|
|
3
3
|
import { IDBAccessLayer } from '@nsshunt/stsdatamanagement';
|
|
4
4
|
import { PublishInstrumentController, InstrumentDefinitions, STSDefaultClientToServerEvents, STSDefaultServerToClientEvents } from '@nsshunt/stsobservability';
|
|
5
5
|
import { IProcessBase, ISocketIoServerHelper, ProcessOptions } from './commonTypes';
|
|
6
|
-
import { RedisMessageHandler } from './redisMessageHandler';
|
|
7
6
|
import { TinyEmitter } from 'tiny-emitter';
|
|
8
7
|
export declare abstract class ProcessBase extends TinyEmitter implements IProcessBase {
|
|
9
8
|
#private;
|
|
@@ -33,6 +32,5 @@ export declare abstract class ProcessBase extends TinyEmitter implements IProces
|
|
|
33
32
|
GetNumCPUs: () => Promise<number>;
|
|
34
33
|
LogSystemTelemetry: () => Promise<void>;
|
|
35
34
|
GetSignalColour: (signal: any) => chalk.Chalk;
|
|
36
|
-
get redisMessageHandler(): RedisMessageHandler;
|
|
37
35
|
}
|
|
38
36
|
//# sourceMappingURL=processbase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processbase.d.ts","sourceRoot":"","sources":["../src/processbase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"processbase.d.ts","sourceRoot":"","sources":["../src/processbase.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAA+E,MAAM,2BAA2B,CAAA;AAEvJ,OAAO,EAAE,cAAc,EAA+D,MAAM,4BAA4B,CAAA;AAOxH,OAAO,EAAE,2BAA2B,EAAuC,qBAAqB,EAE5F,8BAA8B,EAAE,8BAA8B,EAAkB,MAAM,2BAA2B,CAAA;AAIrH,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAA+B,cAAc,EAAiB,MAAM,eAAe,CAAA;AAG/H,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,8BAAsB,WAAY,SAAQ,WAAY,YAAW,YAAY;;gBAS7D,OAAO,EAAE,cAAc;IAyBnC,eAAe,CAAC,OAAO,EAAE,GAAG;IAI5B,cAAc,CAAC,OAAO,EAAE,GAAG;IAI3B,4BAA4B,CAAC,OAAO,EAAE,GAAG;IAMzC,IAAI,OAAO,IAAI,cAAc,CAE5B;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,oBAAoB;IAiHpB,wBAAwB,IAAI,qBAAqB;IAIjD,0BAA0B,IAAI,IAAI;IAIlC,cAAc,aA+Db;IAED,gBAAgB,mBAAoB,KAAK,aAAa,uBAAuB,UAI5E;IAED,IAAI,oBAAoB,IAAI,2BAA2B,GAAG,IAAI,CAE7D;IAED,gBAAgB,CAAC,cAAc,EAAE,KAAK,GAAG,OAAO;IAQ1C,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAWvC;;;OAGA;IACA,eAAe,IAAI,GAAG;IAItB,IAAI,oBAAoB,IAAI,qBAAqB,CAAC,8BAA8B,EAAE,8BAA8B,CAAC,GAAG,IAAI,CAGvH;IAED,IAAI,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,CAAC,8BAA8B,EAAE,8BAA8B,CAAC,GAAG,IAAI,EAG3H;IAgBK,iBAAiB;IAOvB,IAAI,WAAW,IAAI,cAAc,GAAG,IAAI,CA+BvC;IAED,UAAU,QAAa,OAAO,CAAC,MAAM,CAAC,CAkBrC;IAED,kBAAkB,sBA0BjB;IAED,eAAe,WAAY,GAAG,iBAQ5B;CAOL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerprocessbase.d.ts","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAiE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAWvD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,iBAAkB,YAAW,kBAAkB;;gBAMtE,OAAO,EAAE,cAAc;IAInC,aAAa;IAUb,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIzB,0BAA0B,IAAI,IAAI;IAwC3C,SAAS,YAAmB,GAAG,KAAG,OAAO,CAAC,MAAM,CAAC,CAUhD;IAGD,YAAY,aAAoB,MAAM,WAAW,GAAG,KAAG,OAAO,CAAC,UAAU,CAAC,CAWzE;IAED,uBAAuB,QAAa,OAAO,CAAC,UAAU,CAAC,CAQtD;IAED,WAAW,sBAKV;IAED,UAAU,QAAa,OAAO,CAAC,MAAM,CAAC,CAkBrC;IAED,kBAAkB;;;;;;;;;;;;;OAyCjB;IAED,aAAa,
|
|
1
|
+
{"version":3,"file":"workerprocessbase.d.ts","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAiE,kBAAkB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAEjI,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAWvD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,iBAAkB,YAAW,kBAAkB;;gBAMtE,OAAO,EAAE,cAAc;IAInC,aAAa;IAUb,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIzB,0BAA0B,IAAI,IAAI;IAwC3C,SAAS,YAAmB,GAAG,KAAG,OAAO,CAAC,MAAM,CAAC,CAUhD;IAGD,YAAY,aAAoB,MAAM,WAAW,GAAG,KAAG,OAAO,CAAC,UAAU,CAAC,CAWzE;IAED,uBAAuB,QAAa,OAAO,CAAC,UAAU,CAAC,CAQtD;IAED,WAAW,sBAKV;IAED,UAAU,QAAa,OAAO,CAAC,MAAM,CAAC,CAkBrC;IAED,kBAAkB;;;;;;;;;;;;;OAyCjB;IAED,aAAa,sBAqEX;IAEO,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;CAO7C"}
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.IPCMessageHandler = void 0;
|
|
7
|
-
/* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF */ // --> OFF
|
|
8
|
-
const tiny_emitter_1 = require("tiny-emitter");
|
|
9
|
-
const node_cluster_1 = __importDefault(require("node:cluster"));
|
|
10
|
-
const stsutils_1 = require("@nsshunt/stsutils");
|
|
11
|
-
const ipcMessageManager_1 = require("./ipcMessageManager");
|
|
12
|
-
/**
|
|
13
|
-
* IPC Message Handling.
|
|
14
|
-
*
|
|
15
|
-
* This class can be used to support messages between cluster.primary and cluster.worker instances using IPC.
|
|
16
|
-
* This class can be used for both tghe cluster primary and the cluster worker.
|
|
17
|
-
* Note: Currently groups handling is not supported. Use the redis version for this capability.
|
|
18
|
-
*/
|
|
19
|
-
class IPCMessageHandler extends tiny_emitter_1.TinyEmitter {
|
|
20
|
-
#ipcMessageManager = null;
|
|
21
|
-
#options;
|
|
22
|
-
#worker = null;
|
|
23
|
-
#events = {};
|
|
24
|
-
#startWorkerOptions;
|
|
25
|
-
#startPrimaryWorker = null;
|
|
26
|
-
constructor(options) {
|
|
27
|
-
super();
|
|
28
|
-
this.#options = options;
|
|
29
|
-
if (node_cluster_1.default.isPrimary) {
|
|
30
|
-
this.SetupPrimary();
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
this.SetupWorker();
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
get __events() {
|
|
37
|
-
return this.#events;
|
|
38
|
-
}
|
|
39
|
-
#ProcessPrimaryMessageRaw = (payload) => {
|
|
40
|
-
this.#ipcMessageManager?.ProcessMessage(payload, { worker: this.#startPrimaryWorker });
|
|
41
|
-
};
|
|
42
|
-
SetupPrimary = () => {
|
|
43
|
-
const ipcMessageManagerOptions = {
|
|
44
|
-
logger: stsutils_1.defaultLogger,
|
|
45
|
-
requestResponseMessageTimeout: 5000,
|
|
46
|
-
namespace: this.#options.namespace,
|
|
47
|
-
role: 'SERVER',
|
|
48
|
-
messageSender: (payload, options) => {
|
|
49
|
-
options.worker.send(payload);
|
|
50
|
-
},
|
|
51
|
-
ProcessRequestMessage: async (payload, options) => {
|
|
52
|
-
return this.#processPayload(payload, options);
|
|
53
|
-
},
|
|
54
|
-
messageReceiverStart: (options) => {
|
|
55
|
-
// Receive a message to process from a worker
|
|
56
|
-
const worker = options.worker;
|
|
57
|
-
this.#startPrimaryWorker = worker;
|
|
58
|
-
worker.on('message', this.#ProcessPrimaryMessageRaw);
|
|
59
|
-
},
|
|
60
|
-
messageReceiverStop: (options) => {
|
|
61
|
-
const worker = options.worker;
|
|
62
|
-
worker.off('message', this.#ProcessPrimaryMessageRaw);
|
|
63
|
-
},
|
|
64
|
-
groups: []
|
|
65
|
-
};
|
|
66
|
-
this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
|
|
67
|
-
};
|
|
68
|
-
#ProcessWorkerMessageRaw = (payload) => {
|
|
69
|
-
this.#ipcMessageManager?.ProcessMessage(payload, this.#startWorkerOptions);
|
|
70
|
-
};
|
|
71
|
-
SetupWorker = () => {
|
|
72
|
-
const ipcMessageManagerOptions = {
|
|
73
|
-
logger: stsutils_1.defaultLogger,
|
|
74
|
-
requestResponseMessageTimeout: this.#options.requestResponseMessageTimeout,
|
|
75
|
-
namespace: this.#options.namespace,
|
|
76
|
-
role: 'CLIENT',
|
|
77
|
-
messageSender: (payload, options) => {
|
|
78
|
-
// Options not required for sending payloads to the master process
|
|
79
|
-
process.send(payload);
|
|
80
|
-
},
|
|
81
|
-
ProcessRequestMessage: async (payload, options) => {
|
|
82
|
-
return this.#processPayload(payload, options);
|
|
83
|
-
},
|
|
84
|
-
messageReceiverStart: (options) => {
|
|
85
|
-
// Receive a message response back from the primary thread
|
|
86
|
-
this.#startWorkerOptions = { ...options };
|
|
87
|
-
process.on('message', this.#ProcessWorkerMessageRaw);
|
|
88
|
-
},
|
|
89
|
-
messageReceiverStop: (options) => {
|
|
90
|
-
process.off('message', this.#ProcessWorkerMessageRaw);
|
|
91
|
-
},
|
|
92
|
-
groups: []
|
|
93
|
-
};
|
|
94
|
-
this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
|
|
95
|
-
};
|
|
96
|
-
SendMessage = async (payload) => {
|
|
97
|
-
if (this.#ipcMessageManager) {
|
|
98
|
-
if (this.#worker) {
|
|
99
|
-
return this.#ipcMessageManager?.SendMessage(payload, { worker: this.#worker });
|
|
100
|
-
}
|
|
101
|
-
else {
|
|
102
|
-
return this.#ipcMessageManager?.SendMessage(payload, {});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
// Error state - no #ipcMessageManager set
|
|
107
|
-
return {};
|
|
108
|
-
}
|
|
109
|
-
};
|
|
110
|
-
#processPayload = (payload, options) => {
|
|
111
|
-
// check the event name from the collection and invoke that function
|
|
112
|
-
return new Promise((resolve, reject) => {
|
|
113
|
-
if (payload.messageType.localeCompare('REQUEST') === 0) {
|
|
114
|
-
if (payload.requestPayload['__eventName']) {
|
|
115
|
-
const eventName = payload.requestPayload['__eventName'];
|
|
116
|
-
if (this.#events[eventName]) {
|
|
117
|
-
try {
|
|
118
|
-
//const retVal = this.#events[eventName].callback(payload.requestPayload.args, payload, options, this.#events[eventName].ctx);
|
|
119
|
-
this.#events[eventName].callback(...payload.requestPayload.args, (responseMessage) => {
|
|
120
|
-
resolve(responseMessage);
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
catch (error) {
|
|
124
|
-
reject(error);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
};
|
|
131
|
-
// p.on('fromworker', (arg1: number, arg2: string, callback: any) => {
|
|
132
|
-
on(event, callback, ctx) {
|
|
133
|
-
if (this.#events[event]) {
|
|
134
|
-
// Update the event with the same name
|
|
135
|
-
delete this.#events[event];
|
|
136
|
-
}
|
|
137
|
-
const eventObject = {
|
|
138
|
-
event,
|
|
139
|
-
callback,
|
|
140
|
-
ctx
|
|
141
|
-
};
|
|
142
|
-
this.#events[eventObject.event] = eventObject;
|
|
143
|
-
return this;
|
|
144
|
-
//return super.on(event, callback, ctx);
|
|
145
|
-
}
|
|
146
|
-
off(event, callback) {
|
|
147
|
-
if (this.#events[event]) {
|
|
148
|
-
delete this.#events[event];
|
|
149
|
-
}
|
|
150
|
-
return this;
|
|
151
|
-
//return super.off(event, callback);
|
|
152
|
-
}
|
|
153
|
-
Start = (worker) => {
|
|
154
|
-
if (worker) {
|
|
155
|
-
this.#ipcMessageManager?.Start({ worker });
|
|
156
|
-
this.#worker = worker;
|
|
157
|
-
}
|
|
158
|
-
else {
|
|
159
|
-
this.#ipcMessageManager?.Start({});
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
Stop = () => {
|
|
163
|
-
if (this.#worker) {
|
|
164
|
-
this.#ipcMessageManager?.Stop({ worker: this.#worker });
|
|
165
|
-
this.#worker = null;
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
this.#ipcMessageManager?.Stop({});
|
|
169
|
-
}
|
|
170
|
-
};
|
|
171
|
-
get worker() {
|
|
172
|
-
return this.#worker;
|
|
173
|
-
}
|
|
174
|
-
emit(event, ...args) {
|
|
175
|
-
const sendMessage = async () => {
|
|
176
|
-
const retVal = await this.SendMessage({
|
|
177
|
-
__eventName: event,
|
|
178
|
-
args: args.slice(0, args.length - 1)
|
|
179
|
-
});
|
|
180
|
-
// Invoke the response callback
|
|
181
|
-
args[args.length - 1](retVal);
|
|
182
|
-
};
|
|
183
|
-
sendMessage();
|
|
184
|
-
return this;
|
|
185
|
-
//return super.emit(event, ...args);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
exports.IPCMessageHandler = IPCMessageHandler;
|
|
189
|
-
//# sourceMappingURL=ipcMessageHandler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipcMessageHandler.js","sourceRoot":"","sources":["../src/ipcMessageHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IPCMessageManager = void 0;
|
|
4
|
-
const uuid_1 = require("uuid");
|
|
5
|
-
/**
|
|
6
|
-
* todo
|
|
7
|
-
* @typedef {Object} options - todo
|
|
8
|
-
* @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
|
|
9
|
-
*/
|
|
10
|
-
class IPCMessageManager {
|
|
11
|
-
#id;
|
|
12
|
-
#options;
|
|
13
|
-
#inflightMessages = {};
|
|
14
|
-
#messageHeader;
|
|
15
|
-
constructor(options) {
|
|
16
|
-
this.#id = (0, uuid_1.v4)();
|
|
17
|
-
this.#options = options;
|
|
18
|
-
this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
|
|
19
|
-
}
|
|
20
|
-
get id() {
|
|
21
|
-
return this.#id;
|
|
22
|
-
}
|
|
23
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
24
|
-
ReceivedMessageFromMaster(msg) {
|
|
25
|
-
// Override in subclass if required
|
|
26
|
-
}
|
|
27
|
-
SendMessage = (payload, options) => {
|
|
28
|
-
return new Promise((resolve, reject) => {
|
|
29
|
-
this.#SendMessage(payload, options, (payload) => {
|
|
30
|
-
resolve(payload.responsePayload);
|
|
31
|
-
}, (payload) => {
|
|
32
|
-
reject(payload.requestPayload);
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
};
|
|
36
|
-
#SendMessage = (payload, options, callBack, errorCallBack) => {
|
|
37
|
-
const messageId = (0, uuid_1.v4)();
|
|
38
|
-
const requestPayload = {
|
|
39
|
-
header: this.#messageHeader,
|
|
40
|
-
messageId,
|
|
41
|
-
senderId: this.#id,
|
|
42
|
-
senderRole: this.#options.role,
|
|
43
|
-
requestPayload: payload,
|
|
44
|
-
responsePayload: {},
|
|
45
|
-
pid: process.pid.toString(),
|
|
46
|
-
messageType: 'REQUEST'
|
|
47
|
-
};
|
|
48
|
-
const messageRecord = {
|
|
49
|
-
messageId,
|
|
50
|
-
senderId: this.#id,
|
|
51
|
-
senderRole: this.#options.role,
|
|
52
|
-
requestPayload,
|
|
53
|
-
responses: {}, // record
|
|
54
|
-
startTime: performance.now(),
|
|
55
|
-
endTime: 0,
|
|
56
|
-
timeout: setTimeout(() => {
|
|
57
|
-
//this.#LogDebugMessage(chalk.red(`Timeout has occurred after: [${this.#options.requestResponseMessageTimeout}]ms with message id: [${messageRecord.messageId}]. Details: [${JSON.stringify(this.#inflightMessages[messageRecord.messageId].requestPayload)}]`));
|
|
58
|
-
setTimeout(() => {
|
|
59
|
-
delete this.#inflightMessages[messageRecord.messageId];
|
|
60
|
-
}, 0).unref();
|
|
61
|
-
errorCallBack(requestPayload);
|
|
62
|
-
}, this.#options.requestResponseMessageTimeout).unref(), // max message timeout allowed
|
|
63
|
-
callBack,
|
|
64
|
-
errorCallBack
|
|
65
|
-
};
|
|
66
|
-
this.#inflightMessages[messageRecord.messageId] = messageRecord;
|
|
67
|
-
//this.#LogDebugMessage(chalk.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
|
|
68
|
-
this.#options.messageSender(requestPayload, options);
|
|
69
|
-
};
|
|
70
|
-
#ProcessMessage = async (msg, options) => {
|
|
71
|
-
if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
|
|
72
|
-
const message = msg;
|
|
73
|
-
if (this.#inflightMessages[message.messageId]) {
|
|
74
|
-
const inFlightMessageRecord = this.#inflightMessages[message.messageId];
|
|
75
|
-
inFlightMessageRecord.responses[message.senderId] = { ...message };
|
|
76
|
-
let completed = true; // Defaults to true
|
|
77
|
-
if (this.#options.ProcessResponseMessage) {
|
|
78
|
-
completed = await this.#options.ProcessResponseMessage(inFlightMessageRecord.responses, options);
|
|
79
|
-
if (completed) {
|
|
80
|
-
inFlightMessageRecord.endTime = performance.now();
|
|
81
|
-
clearTimeout(inFlightMessageRecord.timeout);
|
|
82
|
-
inFlightMessageRecord.callBack({
|
|
83
|
-
responsePayload: Object.values(inFlightMessageRecord.responses).map(r => r.responsePayload)
|
|
84
|
-
}, options); //
|
|
85
|
-
delete this.#inflightMessages[message.messageId];
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
else if (completed) {
|
|
89
|
-
inFlightMessageRecord.endTime = performance.now();
|
|
90
|
-
clearTimeout(inFlightMessageRecord.timeout);
|
|
91
|
-
inFlightMessageRecord.callBack(message, options); // inFlightMessageRecord.responses
|
|
92
|
-
//@@inFlightMessageRecord.callBack(Object.values(inFlightMessageRecord.responses), options) //
|
|
93
|
-
delete this.#inflightMessages[message.messageId];
|
|
94
|
-
}
|
|
95
|
-
else {
|
|
96
|
-
//console.log(chalk.grey(`#ProcessMessage:5`));
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
else {
|
|
100
|
-
//throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`); //@@
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
};
|
|
104
|
-
Start = (options) => {
|
|
105
|
-
this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
|
|
106
|
-
this.#options.messageReceiverStart(options);
|
|
107
|
-
};
|
|
108
|
-
Stop = (options) => {
|
|
109
|
-
// Kill in-flight messages
|
|
110
|
-
this.#options.messageReceiverStop(options);
|
|
111
|
-
for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
|
|
112
|
-
if (iPCMessageProcessorWorkerRecord.timeout) {
|
|
113
|
-
clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
this.#inflightMessages = {};
|
|
117
|
-
};
|
|
118
|
-
// Process a message recieved from a worker
|
|
119
|
-
ProcessMessage = async (msg, options) => {
|
|
120
|
-
if (msg.header) {
|
|
121
|
-
const checkName = `__STS__${this.#options.namespace}__`; //@@ this is a broadcast becuase the unique uuid is not part of the header test
|
|
122
|
-
if (msg.header.includes(checkName)) {
|
|
123
|
-
const message = msg;
|
|
124
|
-
if (msg.messageType.localeCompare('REQUEST') === 0) {
|
|
125
|
-
let processMessage = true;
|
|
126
|
-
if (message.requestPayload.args && message.requestPayload.args.length > 0 && message.requestPayload.args[0].group) {
|
|
127
|
-
const group = message.requestPayload.args[0].group;
|
|
128
|
-
processMessage = (this.#options.groups.indexOf(group) === -1) ? false : true;
|
|
129
|
-
}
|
|
130
|
-
if (processMessage) {
|
|
131
|
-
message.responsePayload = await this.#options.ProcessRequestMessage(message, options);
|
|
132
|
-
message.senderId = this.#id;
|
|
133
|
-
message.messageType = 'RESPONSE';
|
|
134
|
-
this.#options.messageSender(message, options);
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
else {
|
|
138
|
-
// Received a response (to my request)
|
|
139
|
-
this.#ProcessMessage(msg, options);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
exports.IPCMessageManager = IPCMessageManager;
|
|
146
|
-
//# sourceMappingURL=ipcMessageManager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipcMessageManager.js","sourceRoot":"","sources":["../src/ipcMessageManager.ts"],"names":[],"mappings":";;;AAGA,+BAAoC;AAgBpC;;;;GAIG;AACH,MAAa,iBAAiB;IAE1B,GAAG,CAAS;IACZ,QAAQ,CAA2B;IACnC,iBAAiB,GAAqD,EAAG,CAAC;IAC1E,cAAc,CAAS;IAEvB,YAAY,OAAiC;QACzC,IAAI,CAAC,GAAG,GAAG,IAAA,SAAM,GAAE,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAA,SAAM,GAAE,EAAE,CAAC;IAC3E,CAAC;IAED,IAAI,EAAE;QACF,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;IAED,8DAA8D;IAC9D,yBAAyB,CAAC,GAAQ;QAC9B,mCAAmC;IACvC,CAAC;IAED,WAAW,GAAG,CAAC,OAAmB,EAAE,OAAa,EAAuB,EAAE;QACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,EAC9B,CAAC,OAAuC,EAAE,EAAE;gBACxC,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACrC,CAAC,EACD,CAAC,OAAuC,EAAE,EAAE;gBACxC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACnC,CAAC,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED,YAAY,GAAG,CAAC,OAAmB,EAAE,OAAY,EAC7C,QAA2D,EAC3D,aAAgE,EAC5D,EAAE;QACN,MAAM,SAAS,GAAW,IAAA,SAAM,GAAE,CAAC;QACnC,MAAM,cAAc,GAAmC;YACnD,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC9B,cAAc,EAAE,OAAO;YACvB,eAAe,EAAE,EAAG;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;YAC3B,WAAW,EAAE,SAAS;SACzB,CAAA;QACD,MAAM,aAAa,GAAG;YAClB,SAAS;YACT,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YAC9B,cAAc;YACd,SAAS,EAAE,EAAG,EAAE,SAAS;YACzB,SAAS,EAAE,WAAW,CAAC,GAAG,EAAE;YAC5B,OAAO,EAAE,CAAC;YACV,OAAO,EAAE,UAAU,CAAC,GAAG,EAAE;gBACrB,iQAAiQ;gBACjQ,UAAU,CAAC,GAAG,EAAE;oBACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBAC3D,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;gBACd,aAAa,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,KAAK,EAAE,EAAC,8BAA8B;YACtF,QAAQ;YACR,aAAa;SAChB,CAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;QAChE,oFAAoF;QACpF,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC,CAAA;IAED,eAAe,GAAG,KAAK,EAAE,GAAQ,EAAE,OAAY,EAAiB,EAAE;QAC9D,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YACpE,MAAM,OAAO,GAAI,GAAsC,CAAC;YACxD,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC5C,MAAM,qBAAqB,GAAqC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC1G,qBAAqB,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAE,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;gBACpE,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,mBAAmB;gBACzC,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC;oBACvC,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACjG,IAAI,SAAS,EAAE,CAAC;wBACZ,qBAAqB,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;wBAClD,YAAY,CAAC,qBAAqB,CAAC,OAAyB,CAAC,CAAC;wBAC9D,qBAAqB,CAAC,QAAQ,CAAC;4BAC3B,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;yBACvF,EAAE,OAAO,CAAC,CAAA,CAAC,GAAG;wBACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBACrD,CAAC;gBACL,CAAC;qBAAM,IAAI,SAAS,EAAE,CAAC;oBACnB,qBAAqB,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;oBAClD,YAAY,CAAC,qBAAqB,CAAC,OAAyB,CAAC,CAAC;oBAC9D,qBAAqB,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA,CAAC,kCAAkC;oBACnF,+FAA+F;oBAC/F,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACrD,CAAC;qBAAM,CAAC;oBACJ,+CAA+C;gBACnD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,kGAAkG;YACtG,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,KAAK,GAAG,CAAC,OAAa,EAAE,EAAE;QACtB,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAA,SAAM,GAAE,EAAE,CAAC;QACvE,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,OAAa,EAAE,EAAE;QACrB,0BAA0B;QAC1B,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE3C,KAAK,MAAM,CAAC,EAAE,+BAA+B,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACvF,IAAI,+BAA+B,CAAC,OAAO,EAAE,CAAC;gBAC1C,YAAY,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;QACL,CAAC;QACD,IAAI,CAAC,iBAAiB,GAAG,EAAG,CAAC;IACjC,CAAC,CAAA;IAED,2CAA2C;IAC3C,cAAc,GAAG,KAAK,EAAE,GAAQ,EAAE,OAAY,EAAE,EAAE;QAC9C,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,+EAA+E;YACxI,IAAK,GAAG,CAAC,MAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAI,GAAsC,CAAC;gBACxD,IAAI,GAAG,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;oBACjD,IAAI,cAAc,GAAG,IAAI,CAAC;oBAC1B,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;wBAChH,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBACnD,cAAc,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;oBACjF,CAAC;oBACD,IAAI,cAAc,EAAE,CAAC;wBACjB,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBACtF,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;wBAC5B,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;wBACjC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAClD,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACJ,sCAAsC;oBACtC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;gBACvC,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAA;CACJ;AAlJD,8CAkJC"}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IPCMessageProcessorPrimary = void 0;
|
|
4
|
-
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
5
|
-
const stsutils_1 = require("@nsshunt/stsutils");
|
|
6
|
-
const ipcMessageManager_1 = require("./ipcMessageManager");
|
|
7
|
-
/**
|
|
8
|
-
* IPC Message Handling.
|
|
9
|
-
*
|
|
10
|
-
* This class can be used to support messages between cluster.primary and cluster.worker instances using IPC.
|
|
11
|
-
* This class can be used for finer control for processing messages between the cluster primary and cluster workers.
|
|
12
|
-
* Use the ipcMessageHandler for a simpler implementation.
|
|
13
|
-
* This class is used for the cluster primary thread only.
|
|
14
|
-
* Note: Currently groups handling is not supported. Use the redis version for this capability.
|
|
15
|
-
*/
|
|
16
|
-
class IPCMessageProcessorPrimary {
|
|
17
|
-
#ipcMessageManager;
|
|
18
|
-
#worker = null;
|
|
19
|
-
constructor(classOptions) {
|
|
20
|
-
const ipcMessageManagerOptions = {
|
|
21
|
-
logger: stsutils_1.defaultLogger,
|
|
22
|
-
requestResponseMessageTimeout: 5000,
|
|
23
|
-
namespace: classOptions.namespace,
|
|
24
|
-
role: 'SERVER',
|
|
25
|
-
messageSender: (payload, options) => {
|
|
26
|
-
options.worker.send(payload);
|
|
27
|
-
},
|
|
28
|
-
ProcessRequestMessage: async (payload, options) => {
|
|
29
|
-
if (classOptions.processPayload) {
|
|
30
|
-
return classOptions.processPayload(payload, options);
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return {};
|
|
34
|
-
}
|
|
35
|
-
},
|
|
36
|
-
messageReceiverStart: (options) => {
|
|
37
|
-
// Receive a message to process from a worker
|
|
38
|
-
const worker = options.worker;
|
|
39
|
-
worker.on('message', (payload) => this.#ipcMessageManager.ProcessMessage(payload, { worker }));
|
|
40
|
-
},
|
|
41
|
-
messageReceiverStop: (options) => {
|
|
42
|
-
const worker = options.worker;
|
|
43
|
-
worker.off('message', (payload) => this.#ipcMessageManager.ProcessMessage(payload, { worker }));
|
|
44
|
-
},
|
|
45
|
-
groups: []
|
|
46
|
-
};
|
|
47
|
-
this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
|
|
48
|
-
}
|
|
49
|
-
SendMessage = async (payload) => {
|
|
50
|
-
return this.#ipcMessageManager.SendMessage(payload, { worker: this.#worker });
|
|
51
|
-
};
|
|
52
|
-
Start = (worker) => {
|
|
53
|
-
this.#ipcMessageManager.Start({ worker });
|
|
54
|
-
this.#worker = worker;
|
|
55
|
-
};
|
|
56
|
-
Stop = () => {
|
|
57
|
-
this.#ipcMessageManager.Stop({ worker: this.#worker });
|
|
58
|
-
this.#worker = null;
|
|
59
|
-
};
|
|
60
|
-
get worker() {
|
|
61
|
-
return this.#worker;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
exports.IPCMessageProcessorPrimary = IPCMessageProcessorPrimary;
|
|
65
|
-
//# sourceMappingURL=ipcMessageProcessorPrimary.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipcMessageProcessorPrimary.js","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,gDAAyE;AAMzE,2DAAiF;AAQjF;;;;;;;;GAQG;AACH,MAAa,0BAA0B;IACnC,kBAAkB,CAAoB;IACtC,OAAO,GAAkB,IAAI,CAAC;IAE9B,YAAY,YAAyC;QACjD,MAAM,wBAAwB,GAA6B;YACvD,MAAM,EAAE,wBAAa;YACrB,6BAA6B,EAAE,IAAI;YACnC,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,CAAC,OAAuC,EAAE,OAAY,EAAE,EAAE;gBACpE,OAAO,CAAC,MAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;YACD,qBAAqB,EAAE,KAAK,EAAE,OAAuC,EAAE,OAAY,EAAuB,EAAE;gBACxG,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;oBAC9B,OAAO,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,OAAO,EAAG,CAAC;gBACf,CAAC;YACL,CAAC;YACD,oBAAoB,EAAE,CAAC,OAAY,EAAE,EAAE;gBACnC,6CAA6C;gBAC7C,MAAM,MAAM,GAAI,OAAO,CAAC,MAAiB,CAAC;gBAC1C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACnG,CAAC;YACD,mBAAmB,EAAE,CAAC,OAAY,EAAE,EAAE;gBAClC,MAAM,MAAM,GAAI,OAAO,CAAC,MAAiB,CAAC;gBAC1C,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;YACpG,CAAC;YACD,MAAM,EAAE,EAAG;SACd,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,GAAG,KAAK,EAAE,OAAmB,EAAuB,EAAE;QAC7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAClF,CAAC,CAAA;IAED,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QACvB,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;IAC1B,CAAC,CAAA;IAED,IAAI,GAAG,GAAG,EAAE;QACR,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC,CAAA;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;CACJ;AAnDD,gEAmDC"}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.IPCMessageProcessorWorker = void 0;
|
|
4
|
-
/* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
|
|
5
|
-
const stsutils_1 = require("@nsshunt/stsutils");
|
|
6
|
-
const ipcMessageManager_1 = require("./ipcMessageManager");
|
|
7
|
-
/**
|
|
8
|
-
* IPC Message Handling.
|
|
9
|
-
*
|
|
10
|
-
* This class can be used to support messages between cluster.primary and cluster.worker instances using IPC.
|
|
11
|
-
* This class can be used for finer control for processing messages between the cluster primary and cluster workers.
|
|
12
|
-
* Use the ipcMessageHandler for a simpler implementation.
|
|
13
|
-
* This class is used for the cluster worker threads only.
|
|
14
|
-
* Note: Currently groups handling is not supported. Use the redis version for this capability.
|
|
15
|
-
*/
|
|
16
|
-
class IPCMessageProcessorWorker {
|
|
17
|
-
#ipcMessageManager;
|
|
18
|
-
constructor(classOptions) {
|
|
19
|
-
const ipcMessageManagerOptions = {
|
|
20
|
-
logger: stsutils_1.defaultLogger,
|
|
21
|
-
requestResponseMessageTimeout: classOptions.requestResponseMessageTimeout,
|
|
22
|
-
namespace: classOptions.namespace,
|
|
23
|
-
role: 'CLIENT',
|
|
24
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
25
|
-
messageSender: (payload, options) => {
|
|
26
|
-
// Options not required for sending payloads to the master process
|
|
27
|
-
process.send(payload);
|
|
28
|
-
},
|
|
29
|
-
ProcessRequestMessage: async (payload, options) => {
|
|
30
|
-
if (classOptions.processPayload) {
|
|
31
|
-
return classOptions.processPayload(payload, options);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
return {};
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
messageReceiverStart: (options) => {
|
|
38
|
-
// Receive a message response back from the primary thread
|
|
39
|
-
process.on('message', (payload) => {
|
|
40
|
-
this.#ipcMessageManager.ProcessMessage(payload, options);
|
|
41
|
-
});
|
|
42
|
-
},
|
|
43
|
-
messageReceiverStop: (options) => {
|
|
44
|
-
process.off('message', (payload) => this.#ipcMessageManager.ProcessMessage(payload, options));
|
|
45
|
-
},
|
|
46
|
-
groups: []
|
|
47
|
-
};
|
|
48
|
-
this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
|
|
49
|
-
}
|
|
50
|
-
SendMessage = async (payload) => {
|
|
51
|
-
return this.#ipcMessageManager.SendMessage(payload, {});
|
|
52
|
-
};
|
|
53
|
-
Start = () => {
|
|
54
|
-
this.#ipcMessageManager.Start({});
|
|
55
|
-
};
|
|
56
|
-
Stop = () => {
|
|
57
|
-
this.#ipcMessageManager.Stop({});
|
|
58
|
-
};
|
|
59
|
-
}
|
|
60
|
-
exports.IPCMessageProcessorWorker = IPCMessageProcessorWorker;
|
|
61
|
-
//# sourceMappingURL=ipcMessageProcessorWorker.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipcMessageProcessorWorker.js","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":";;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,gDAAyE;AAIzE,2DAAiF;AASjF;;;;;;;;GAQG;AACH,MAAa,yBAAyB;IAClC,kBAAkB,CAAoB;IAEtC,YAAY,YAAwC;QAChD,MAAM,wBAAwB,GAA6B;YACvD,MAAM,EAAE,wBAAa;YACrB,6BAA6B,EAAE,YAAY,CAAC,6BAA6B;YACzE,SAAS,EAAE,YAAY,CAAC,SAAS;YACjC,IAAI,EAAE,QAAQ;YACd,8DAA8D;YAC9D,aAAa,EAAE,CAAC,OAAuC,EAAE,OAAY,EAAE,EAAE;gBACrE,kEAAkE;gBACjE,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,qBAAqB,EAAE,KAAK,EAAE,OAAuC,EAAE,OAAY,EAAuB,EAAE;gBACxG,IAAI,YAAY,CAAC,cAAc,EAAE,CAAC;oBAC9B,OAAO,YAAY,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACzD,CAAC;qBAAM,CAAC;oBACJ,OAAO,EAAG,CAAC;gBACf,CAAC;YACL,CAAC;YACD,oBAAoB,EAAE,CAAC,OAAY,EAAE,EAAE;gBACnC,0DAA0D;gBAC1D,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;oBAC9B,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC7D,CAAC,CAAC,CAAC;YACP,CAAC;YACD,mBAAmB,EAAE,CAAC,OAAY,EAAE,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;YAClG,CAAC;YACD,MAAM,EAAE,EAAG;SACd,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,WAAW,GAAG,KAAK,EAAE,OAAmB,EAAuB,EAAE;QAC7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,EAAE,EAAG,CAAC,CAAC;IAC7D,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACT,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAG,CAAC,CAAC;IACvC,CAAC,CAAA;IAED,IAAI,GAAG,GAAG,EAAE;QACR,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAG,CAAC,CAAC;IACtC,CAAC,CAAA;CACJ;AA9CD,8DA8CC"}
|