@nsshunt/stsappframework 3.1.96 → 3.1.97

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.
@@ -0,0 +1,100 @@
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.IPCMessageManager = void 0;
7
+ /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
8
+ const chalk_1 = __importDefault(require("chalk"));
9
+ const uuid_1 = require("uuid");
10
+ /**
11
+ * todo
12
+ * @typedef {Object} options - todo
13
+ * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
14
+ */
15
+ class IPCMessageManager {
16
+ #options;
17
+ #inflightMessages = {};
18
+ #messageHeader;
19
+ constructor(options) {
20
+ this.#options = options;
21
+ this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
22
+ }
23
+ #LogDebugMessage(message) {
24
+ this.#options.logger.debug(message);
25
+ }
26
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
27
+ ReceivedMessageFromMaster(msg) {
28
+ // Override in subclass if required
29
+ }
30
+ SendMessage = (payload) => {
31
+ return new Promise((resolve, reject) => {
32
+ this.#SendMessage(payload, (payload) => {
33
+ resolve(payload.responsePayload);
34
+ }, (payload) => {
35
+ reject(payload.requestPayload);
36
+ });
37
+ });
38
+ };
39
+ #SendMessage = (payload, callBack, errorCallBack) => {
40
+ const messageId = (0, uuid_1.v4)();
41
+ const requestPayload = {
42
+ header: this.#messageHeader,
43
+ messageId,
44
+ requestPayload: payload,
45
+ responsePayload: {},
46
+ pid: process.pid.toString(),
47
+ messageType: 'REQUEST'
48
+ };
49
+ const messageRecord = {
50
+ messageId,
51
+ requestPayload,
52
+ responses: {}, // record
53
+ startTime: performance.now(),
54
+ endTime: 0,
55
+ timeout: setTimeout(() => {
56
+ this.#LogDebugMessage(chalk_1.default.red(`Timeout has occurred after: [${this.#options.requestResponseMessageTimeout}]ms with message id: [${messageRecord.messageId}]. Details: [${JSON.stringify(this.#inflightMessages[messageRecord.messageId].requestPayload)}]`));
57
+ setTimeout(() => {
58
+ delete this.#inflightMessages[messageRecord.messageId];
59
+ }, 0).unref();
60
+ errorCallBack(requestPayload);
61
+ }, this.#options.requestResponseMessageTimeout).unref(), // max message timeout allowed
62
+ callBack,
63
+ errorCallBack
64
+ };
65
+ this.#inflightMessages[messageRecord.messageId] = messageRecord;
66
+ //this.#LogDebugMessage(chalk.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
67
+ this.#options.messageSender(requestPayload);
68
+ };
69
+ ProcessMessage = (msg) => {
70
+ if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
71
+ const message = msg;
72
+ if (this.#inflightMessages[message.messageId]) {
73
+ const inFlightMessageRecord = this.#inflightMessages[message.messageId];
74
+ inFlightMessageRecord.responses[message.pid] = { ...message };
75
+ inFlightMessageRecord.endTime = performance.now();
76
+ clearTimeout(inFlightMessageRecord.timeout);
77
+ //this.#LogDebugMessage(chalk.green(`received: [${JSON.stringify(message)}]`));
78
+ inFlightMessageRecord.callBack(message);
79
+ delete this.#inflightMessages[message.messageId];
80
+ }
81
+ else {
82
+ throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
83
+ }
84
+ }
85
+ };
86
+ Start = () => {
87
+ this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
88
+ };
89
+ Stop = () => {
90
+ // Kill in-flight messages
91
+ for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
92
+ if (iPCMessageProcessorWorkerRecord.timeout) {
93
+ clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
94
+ }
95
+ }
96
+ this.#inflightMessages = {};
97
+ };
98
+ }
99
+ exports.IPCMessageManager = IPCMessageManager;
100
+ //# sourceMappingURL=ipcMessageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipcMessageManager.js","sourceRoot":"","sources":["../src/ipcMessageManager.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.IPCMessageProcessorPrimary = void 0;
7
- const chalk_1 = __importDefault(require("chalk"));
4
+ /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
5
+ const stsutils_1 = require("@nsshunt/stsutils");
6
+ const ipcMessageManager_1 = require("./ipcMessageManager");
8
7
  /**
9
8
  * todo
10
9
  * @typedef {Object} options - todo
@@ -12,28 +11,49 @@ const chalk_1 = __importDefault(require("chalk"));
12
11
  */
13
12
  class IPCMessageProcessorPrimary {
14
13
  #options;
14
+ #ipcMessageManager;
15
15
  constructor(options) {
16
16
  this.#options = options;
17
+ const ipcMessageManagerOptions = {
18
+ logger: stsutils_1.defaultLogger,
19
+ requestResponseMessageTimeout: 2000,
20
+ namespace: options.namespace,
21
+ messageSender: (payload) => {
22
+ options.worker.send(payload);
23
+ }
24
+ };
25
+ this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
17
26
  }
18
- #LogDebugMessage(message) {
19
- this.#options.logger.debug(message);
20
- }
27
+ // Process a message recieved from a worker
21
28
  #processMessage = async (worker, msg) => {
22
29
  if (msg.header) {
23
30
  const checkName = `__STS__${this.#options.namespace}__`;
24
31
  if (msg.header.includes(checkName)) {
25
32
  const message = msg;
26
- message.responsePayload = await this.#options.processCommand(message);
27
- this.#LogDebugMessage(chalk_1.default.magenta(`sending: [${JSON.stringify(message)}]`));
28
- worker.send(message);
33
+ if (msg.messageType.localeCompare('REQUEST') === 0) {
34
+ message.responsePayload = await this.#options.processCommand(message);
35
+ message.messageType = 'RESPONSE';
36
+ //this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
37
+ worker.send(message);
38
+ }
39
+ else {
40
+ // Received a response (to my request)
41
+ this.#ipcMessageManager.ProcessMessage(msg);
42
+ }
29
43
  }
30
44
  }
31
45
  };
46
+ SendMessage = (payload) => {
47
+ return this.#ipcMessageManager.SendMessage(payload);
48
+ };
32
49
  Start = (worker) => {
50
+ this.#ipcMessageManager.Start();
51
+ // Receive a message to process from a worker
33
52
  worker.on('message', (payload) => this.#processMessage(worker, payload));
34
53
  };
35
54
  Stop = (worker) => {
36
55
  worker.off('message', (payload) => this.#processMessage(worker, payload));
56
+ this.#ipcMessageManager.Stop();
37
57
  };
38
58
  }
39
59
  exports.IPCMessageProcessorPrimary = IPCMessageProcessorPrimary;
@@ -1 +1 @@
1
- {"version":3,"file":"ipcMessageProcessorPrimary.js","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";;;;;;AAEA,kDAA0B;AAW1B;;;;GAIG;AACH,MAAa,0BAA0B;IAEnC,QAAQ,CAA8B;IAEtC,YAAY,OAAoC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,OAAY;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,eAAe,GAAG,KAAK,EAAE,MAAc,EAAE,GAAQ,EAAE,EAAE;QACjD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;YACxD,IAAK,GAAG,CAAC,MAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAI,GAAsC,CAAC;gBACxD,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;gBAEtE,IAAI,CAAC,gBAAgB,CAAC,eAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC7E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QACvB,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAA;CACJ;AAhCD,gEAgCC"}
1
+ {"version":3,"file":"ipcMessageProcessorPrimary.js","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,gDAAyE;AAMzE,2DAAiF;AAQjF;;;;GAIG;AACH,MAAa,0BAA0B;IAEnC,QAAQ,CAA8B;IACtC,kBAAkB,CAAoB;IAEtC,YAAY,OAAoC;QAC5C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAExB,MAAM,wBAAwB,GAA6B;YACvD,MAAM,EAAE,wBAAa;YACrB,6BAA6B,EAAE,IAAI;YACnC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,CAAC,OAAuC,EAAE,EAAE;gBACtD,OAAO,CAAC,MAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1C,CAAC;SACJ,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,2CAA2C;IAC3C,eAAe,GAAG,KAAK,EAAE,MAAc,EAAE,GAAQ,EAAE,EAAE;QACjD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;YACxD,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,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACtE,OAAO,CAAC,WAAW,GAAG,UAAU,CAAA;oBAChC,+EAA+E;oBAC/E,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACJ,sCAAsC;oBACtC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,WAAW,GAAG,CAAC,OAAmB,EAAuB,EAAE;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAA;IAED,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE;QACvB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,6CAA6C;QAC7C,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,CAAC,CAAA;IAED,IAAI,GAAG,CAAC,MAAc,EAAE,EAAE;QACtB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC,CAAA;CACJ;AApDD,gEAoDC"}
@@ -1,99 +1,56 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.IPCMessageProcessorWorker = void 0;
7
4
  /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
8
- const chalk_1 = __importDefault(require("chalk"));
9
- const uuid_1 = require("uuid");
10
- /**
11
- * todo
12
- * @typedef {Object} options - todo
13
- * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
14
- */
5
+ const stsutils_1 = require("@nsshunt/stsutils");
6
+ const ipcMessageManager_1 = require("./ipcMessageManager");
15
7
  class IPCMessageProcessorWorker {
16
8
  #options;
17
- #inflightMessages = {};
18
- #messageHeader;
9
+ #ipcMessageManager;
19
10
  constructor(options) {
20
11
  this.#options = options;
21
- this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
22
- }
23
- #LogDebugMessage(message) {
24
- this.#options.logger.debug(message);
25
- }
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
27
- ReceivedMessageFromMaster(msg) {
28
- // Override in subclass if required
29
- }
30
- SendMessage = (payload) => {
31
- return new Promise((resolve, reject) => {
32
- this.#SendMessageToParentProcess(payload, (payload) => {
33
- resolve(payload);
34
- }, (payload) => {
35
- reject(payload);
36
- });
37
- });
38
- };
39
- #SendMessageToParentProcess = (payload, callBack, errorCallBack) => {
40
- const messageId = (0, uuid_1.v4)();
41
- const requestPayload = {
42
- header: this.#messageHeader,
43
- messageId,
44
- requestPayload: payload,
45
- responsePayload: {},
46
- pid: process.pid.toString()
47
- };
48
- const messageRecord = {
49
- messageId,
50
- requestPayload,
51
- responses: {}, // record
52
- startTime: performance.now(),
53
- endTime: 0,
54
- timeout: setTimeout(() => {
55
- this.#LogDebugMessage(chalk_1.default.red(`Timeout has occurred after: [${this.#options.requestResponseMessageTimeout}]ms with message id: [${messageRecord.messageId}]. Details: [${JSON.stringify(this.#inflightMessages[messageRecord.messageId].requestPayload)}]`));
56
- setTimeout(() => {
57
- delete this.#inflightMessages[messageRecord.messageId];
58
- }, 0).unref();
59
- errorCallBack(requestPayload);
60
- }, this.#options.requestResponseMessageTimeout).unref(), // max message timeout allowed
61
- callBack,
62
- errorCallBack
63
- };
64
- this.#inflightMessages[messageRecord.messageId] = messageRecord;
65
- this.#LogDebugMessage(chalk_1.default.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
66
- process.send(requestPayload);
67
- };
68
- #processMessage = (msg) => {
69
- if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
70
- const message = msg;
71
- if (this.#inflightMessages[message.messageId]) {
72
- const inFlightMessageRecord = this.#inflightMessages[message.messageId];
73
- inFlightMessageRecord.responses[message.pid] = { ...message };
74
- inFlightMessageRecord.endTime = performance.now();
75
- this.#LogDebugMessage(chalk_1.default.green(`received: [${JSON.stringify(message)}]`));
76
- inFlightMessageRecord.callBack(message);
12
+ const ipcMessageManagerOptions = {
13
+ logger: stsutils_1.defaultLogger,
14
+ requestResponseMessageTimeout: options.requestResponseMessageTimeout,
15
+ namespace: options.namespace,
16
+ messageSender: (payload) => {
17
+ process.send(payload);
77
18
  }
78
- else {
79
- throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
19
+ };
20
+ this.#ipcMessageManager = new ipcMessageManager_1.IPCMessageManager(ipcMessageManagerOptions);
21
+ }
22
+ // Process a message recieved from the primary thread
23
+ #processMessage = async (msg) => {
24
+ if (msg.header) {
25
+ const checkName = `__STS__${this.#options.namespace}__`;
26
+ if (msg.header.includes(checkName)) {
27
+ const message = msg;
28
+ if (msg.messageType.localeCompare('REQUEST') === 0) {
29
+ message.responsePayload = await this.#options.processCommand(message);
30
+ message.messageType = 'RESPONSE';
31
+ //this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
32
+ process.send(message);
33
+ }
34
+ else {
35
+ // Received a response (to my request)
36
+ this.#ipcMessageManager.ProcessMessage(msg);
37
+ }
80
38
  }
81
39
  }
82
40
  };
41
+ SendMessage = (payload) => {
42
+ return this.#ipcMessageManager.SendMessage(payload);
43
+ };
83
44
  Start = () => {
84
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
85
- this.#messageHeader = `__STS__${this.#options.namespace}__${(0, uuid_1.v4)()}`;
45
+ this.#ipcMessageManager.Start();
46
+ // Receive a message response back from the primary thread
47
+ //process.on('message', this.#ipcMessageManager.ProcessMessage);
86
48
  process.on('message', this.#processMessage);
87
49
  };
88
50
  Stop = () => {
51
+ //process.off('message', this.#ipcMessageManager.ProcessMessage);
89
52
  process.off('message', this.#processMessage);
90
- // Kill in-flight messages
91
- for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
92
- if (iPCMessageProcessorWorkerRecord.timeout) {
93
- clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
94
- }
95
- }
96
- this.#inflightMessages = {};
53
+ this.#ipcMessageManager.Stop();
97
54
  };
98
55
  }
99
56
  exports.IPCMessageProcessorWorker = IPCMessageProcessorWorker;
@@ -1 +1 @@
1
- {"version":3,"file":"ipcMessageProcessorWorker.js","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":";;;;;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,kDAA0B;AAI1B,+BAAoC;AASpC;;;;GAIG;AACH,MAAa,yBAAyB;IAElC,QAAQ,CAA6B;IACrC,iBAAiB,GAAqD,EAAG,CAAC;IAC1E,cAAc,CAAS;IAEvB,YAAY,OAAmC;QAC3C,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,gBAAgB,CAAC,OAAY;QACzB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACxC,CAAC;IAED,kGAAkG;IAClG,yBAAyB,CAAC,GAAQ;QAC9B,mCAAmC;IACvC,CAAC;IAED,WAAW,GAAG,CAAC,OAAmB,EAAuB,EAAE;QACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,2BAA2B,CAAC,OAAO,EACpC,CAAC,OAAY,EAAE,EAAE;gBACb,OAAO,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC,EACD,CAAC,OAAY,EAAE,EAAE;gBACb,MAAM,CAAC,OAAO,CAAC,CAAC;YACpB,CAAC,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED,2BAA2B,GAAG,CAAC,OAAmB,EAAE,QAA2D,EAAE,aAAgE,EAAQ,EAAE;QACvL,MAAM,SAAS,GAAW,IAAA,SAAM,GAAE,CAAC;QACnC,MAAM,cAAc,GAAmC;YACnD,MAAM,EAAE,IAAI,CAAC,cAAc;YAC3B,SAAS;YACT,cAAc,EAAE,OAAO;YACvB,eAAe,EAAE,EAAG;YACpB,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE;SAC9B,CAAA;QACD,MAAM,aAAa,GAAG;YAClB,SAAS;YACT,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,IAAI,CAAC,gBAAgB,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,yBAAyB,aAAa,CAAC,SAAS,gBAAgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/P,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,IAAI,CAAC,gBAAgB,CAAC,eAAK,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;QACjF,OAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1C,CAAC,CAAA;IAED,eAAe,GAAG,CAAC,GAAQ,EAAE,EAAE;QAC3B,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,GAAG,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;gBAC9D,qBAAqB,CAAC,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;gBAElD,IAAI,CAAC,gBAAgB,CAAC,eAAK,CAAC,KAAK,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7E,qBAAqB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;YAC3C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,KAAK,CAAC,qDAAqD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;YAC/F,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACT,+DAA+D;QAC/D,IAAI,CAAC,cAAc,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,IAAA,SAAM,GAAE,EAAE,CAAC;QACvE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC,CAAA;IAED,IAAI,GAAG,GAAG,EAAE;QACR,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7C,0BAA0B;QAC1B,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;CACJ;AA9FD,8DA8FC"}
1
+ {"version":3,"file":"ipcMessageProcessorWorker.js","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":";;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,gDAAyE;AAIzE,2DAAiF;AASjF,MAAa,yBAAyB;IAClC,QAAQ,CAA4B;IACpC,kBAAkB,CAAoB;IAEtC,YAAY,OAAmC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,MAAM,wBAAwB,GAA6B;YACvD,MAAM,EAAE,wBAAa;YACrB,6BAA6B,EAAE,OAAO,CAAC,6BAA6B;YACpE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,aAAa,EAAE,CAAC,OAAuC,EAAE,EAAE;gBACtD,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;SACJ,CAAA;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,qCAAiB,CAAC,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IAED,qDAAqD;IACrD,eAAe,GAAG,KAAK,EAAE,GAAQ,EAAE,EAAE;QACjC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,UAAU,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CAAC;YACxD,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,OAAO,CAAC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACtE,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC;oBACjC,+EAA+E;oBAC9E,OAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACJ,sCAAsC;oBACtC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;gBAChD,CAAC;YACL,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,WAAW,GAAG,CAAC,OAAmB,EAAuB,EAAE;QACvD,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAA;IAED,KAAK,GAAG,GAAG,EAAE;QACT,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAEhC,0DAA0D;QAC1D,gEAAgE;QAChE,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAChD,CAAC,CAAA;IAED,IAAI,GAAG,GAAG,EAAE;QACR,iEAAiE;QACjE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7C,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC,CAAA;CACJ;AArDD,8DAqDC"}
@@ -8,81 +8,98 @@ const appConfig_1 = require("./appConfig");
8
8
  const __1 = require("./..");
9
9
  const appWorkerWSS_1 = require("./appWorkerWSS");
10
10
  const cluster_1 = __importDefault(require("cluster"));
11
- const node_fs_1 = __importDefault(require("node:fs"));
12
- //const pid = process.pid;
13
- const pid = 523552;
14
- const filePath = `/proc/${pid}/net/dev`;
15
- const LogInfoMessage = (message) => console.log(message);
16
- const LogErrorMessage = (message) => console.error(message);
17
- /*
18
- async function testError() {
19
- throw new Error('some error')
20
- }
21
-
22
- async function testtheerror() {
23
- try {
24
- await testError();
25
- } catch (error) {
26
- this.#LogErrorMessage(`Error2: [${error}]`);
27
- }
28
- }
29
-
30
- async function testtheerror2(cb: (error: any) => void) {
31
- try {
32
-
33
- cb('some error');
34
-
35
- } catch (error) {
36
- this.#LogErrorMessage(`Error2: [${error}]`);
37
- }
38
- }
39
-
40
- (async () => {
41
- await Sleep(1000);
42
- let z = await testtheerror2((error) => this.#LogInfoMessage(error));
43
- this.#LogInfoMessage(`done.....`);
44
-
45
- process.exit(0);
46
- })();
47
- */
48
- function getNetworkUsage() {
49
- try {
50
- // Read the contents of the /proc/[pid]/net/dev file
51
- const content = node_fs_1.default.readFileSync(filePath, 'utf8');
52
- // Process the content to extract relevant information
53
- const lines = content.trim().split('\n');
54
- const headers1 = lines[0].split('|').map(header => header.trim());
55
- const headers2 = lines[1].split('|').map(header => header.trim());
56
- const data = lines[2].split('|').map(value => value.trim());
57
- LogInfoMessage(data);
58
- // Find the index of the relevant network statistics (e.g., bytes received and transmitted)
59
- //const rxIndex = headers.indexOf('Receive');
60
- //const txIndex = headers.indexOf('Transmit');
61
- // Display network usage information
62
- /*
63
- this.#LogInfoMessage(`Network Usage for Process ${pid}:`);
64
- this.#LogInfoMessage(` Incoming: ${data[rxIndex]} bytes`);
65
- this.#LogInfoMessage(` Outgoing: ${data[txIndex]} bytes`);
66
- */
67
- }
68
- catch (error) {
69
- LogErrorMessage(`Error reading file: [${error}]`);
70
- }
71
- }
11
+ const ipcMessageProcessorWorker_1 = require("./../ipcMessageProcessorWorker");
12
+ const stsutils_1 = require("@nsshunt/stsutils");
13
+ const ipcMessageProcessorPrimary_1 = require("./../ipcMessageProcessorPrimary");
14
+ const chalk_1 = __importDefault(require("chalk"));
15
+ const sleepVal = 0;
16
+ const maxLoop = 20000;
72
17
  if (cluster_1.default.isPrimary) {
73
18
  new __1.MasterProcessBase((0, appConfig_1.ServiceConfigOptions)(true, cluster_1.default.isPrimary)).SetupServer();
74
- setInterval(function () {
75
- /*
76
- si.networkStats().then(data => {
77
- this.#LogInfoMessage(data);
78
- });
79
- */
80
- getNetworkUsage();
81
- //this.#LogInfoMessage(process.pid)
82
- //getNetworkUsage()
19
+ setTimeout(async () => {
20
+ for (const id in cluster_1.default.workers) {
21
+ const p1 = new ipcMessageProcessorPrimary_1.IPCMessageProcessorPrimary({
22
+ logger: stsutils_1.defaultLogger,
23
+ namespace: 'test1',
24
+ processCommand: async (payload) => {
25
+ return {
26
+ msg: `From PRIMARY: [${process.pid}]`,
27
+ yousent: payload.requestPayload,
28
+ hello1: `world1`,
29
+ pid: process.pid
30
+ };
31
+ },
32
+ worker: cluster_1.default.workers[id]
33
+ });
34
+ const p2 = new ipcMessageProcessorPrimary_1.IPCMessageProcessorPrimary({
35
+ logger: stsutils_1.defaultLogger,
36
+ namespace: 'test2',
37
+ processCommand: async (payload) => {
38
+ return {
39
+ msg: `From PRIMARY: [${process.pid}]`,
40
+ yousent: payload.requestPayload,
41
+ hello2: `world2`,
42
+ pid: process.pid
43
+ };
44
+ },
45
+ worker: cluster_1.default.workers[id]
46
+ });
47
+ p1.Start(cluster_1.default.workers[id]);
48
+ p2.Start(cluster_1.default.workers[id]);
49
+ setTimeout(async () => {
50
+ for (let i = 0; i < maxLoop; i++) {
51
+ const retVal1 = await p1.SendMessage({
52
+ from1: 'text from 1',
53
+ loop: i
54
+ });
55
+ const retVal2 = await p2.SendMessage({
56
+ from1: 'text from 2',
57
+ loop: i
58
+ });
59
+ console.log(`[${process.pid}] [${JSON.stringify(retVal1)}]`);
60
+ console.log(`[${process.pid}] [${JSON.stringify(retVal2)}]`);
61
+ await (0, stsutils_1.Sleep)(sleepVal);
62
+ }
63
+ }, 1000);
64
+ }
83
65
  }, 1000);
84
66
  }
85
67
  else {
86
68
  new appWorkerWSS_1.WorkerProcess((0, appConfig_1.ServiceConfigOptions)(true, cluster_1.default.isPrimary)).SetupServer();
69
+ const w1 = new ipcMessageProcessorWorker_1.IPCMessageProcessorWorker({
70
+ logger: stsutils_1.defaultLogger,
71
+ namespace: 'test1',
72
+ requestResponseMessageTimeout: 2000,
73
+ processCommand: async (payload) => {
74
+ return {
75
+ msg: `From WORKER: [${process.pid}]`,
76
+ yousent1: payload.requestPayload,
77
+ pid: process.pid
78
+ };
79
+ }
80
+ });
81
+ const w2 = new ipcMessageProcessorWorker_1.IPCMessageProcessorWorker({
82
+ logger: stsutils_1.defaultLogger,
83
+ namespace: 'test2',
84
+ requestResponseMessageTimeout: 2000,
85
+ processCommand: async (payload) => {
86
+ return {
87
+ msg: `From WORKER: [${process.pid}]`,
88
+ yousent2: payload.requestPayload,
89
+ pid: process.pid
90
+ };
91
+ }
92
+ });
93
+ w1.Start();
94
+ w2.Start();
95
+ setTimeout(async () => {
96
+ for (let i = 0; i < maxLoop; i++) {
97
+ const retVal1 = await w1.SendMessage({ hello: `from worker 1: ${i}` });
98
+ console.log(chalk_1.default.blue(` ==> [${process.pid}] [${JSON.stringify(retVal1)}]`));
99
+ const retVal2 = await w2.SendMessage({ hello: `from worker 2: ${i}` });
100
+ console.log(chalk_1.default.blue(` ==> [${process.pid}] [${JSON.stringify(retVal2)}]`));
101
+ await (0, stsutils_1.Sleep)(sleepVal);
102
+ }
103
+ }, 1000);
87
104
  }
88
105
  //# sourceMappingURL=app.js.map
@@ -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,sDAA8B;AAE9B,sDAAwB;AAExB,0BAA0B;AAC1B,MAAM,GAAG,GAAG,MAAM,CAAA;AAElB,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAExC,MAAM,cAAc,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAC7D,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAChE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8BE;AAEF,SAAS,eAAe;IACpB,IAAI,CAAC;QACD,oDAAoD;QACpD,MAAM,OAAO,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElD,sDAAsD;QACtD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAE5D,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,2FAA2F;QAC3F,6CAA6C;QAC7C,8CAA8C;QAE9C,oCAAoC;QACpC;;;;QAIA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,eAAe,CAAC,wBAAwB,KAAK,GAAG,CAAC,CAAC;IACtD,CAAC;AACL,CAAC;AAED,IAAI,iBAAO,CAAC,SAAS,EAAE,CAAC;IACpB,IAAI,qBAAiB,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEnF,WAAW,CAAC;QACR;;;;UAIE;QAEF,eAAe,EAAE,CAAA;QAEjB,mCAAmC;QAEnC,mBAAmB;IAEvB,CAAC,EAAE,IAAI,CAAC,CAAA;AAEZ,CAAC;KAAM,CAAC;IACJ,IAAI,4BAAa,CAAC,IAAA,gCAAoB,EAAC,IAAI,EAAE,iBAAO,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;AACnF,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/testing/app.ts"],"names":[],"mappings":"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"}
@@ -30,7 +30,7 @@ ${process.pid}${ModelDelimeter.COMPONENT_SEPERATOR}${(isMaster ? process.pid : p
30
30
  function ServiceConfigOptions(clusterMode, isMaster) {
31
31
  winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple());
32
32
  const logger = winston_1.default.createLogger({
33
- level: 'silly',
33
+ level: 'debug',
34
34
  format: winston_1.default.format.combine(winston_1.default.format.colorize(), winston_1.default.format.simple()),
35
35
  transports: [
36
36
  new winston_1.default.transports.Console()
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.96",
3
+ "version": "3.1.97",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
package/runtest2.sh CHANGED
@@ -5,8 +5,8 @@ export STS_PROJ_ROOT=./..; \
5
5
  STSENVFILE=$STS_PROJ_ROOT/stsglobalresources/.env \
6
6
  REST01_PORT=3003 \
7
7
  REST01_HOST_PORT=3003 \
8
- REST01_ENDPOINT="https://stsrest.stsmda.org" \
9
- MAX_CPU=1 \
8
+ REST01_ENDPOINT="https://stscore.stsmda.org" \
9
+ MAX_CPU=2 \
10
10
  AS_ENDPOINT=https://stscore.stsmda.org \
11
11
  AS_HOST_PORT=3002 \
12
12
  AS_PORT=3002 \
@@ -270,6 +270,7 @@ export interface IIPCMessageProcessorIPCPayload {
270
270
  requestPayload: JSONObject
271
271
  responsePayload: JSONObject
272
272
  pid: string
273
+ messageType: 'REQUEST' | 'RESPONSE'
273
274
  }
274
275
 
275
276
  export interface IIPCMessageProcessorWorkerRecord {
@@ -0,0 +1,117 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
2
+ import chalk from 'chalk';
3
+
4
+ import { ISTSLogger, JSONObject } from '@nsshunt/stsutils'
5
+
6
+ import { v4 as uuidv4 } from 'uuid';
7
+
8
+ import { IIPCMessageProcessorIPCPayload, IIPCMessageProcessorWorkerRecord } from './commonTypes'
9
+
10
+ export interface IPCMessageManagerOptions {
11
+ logger: ISTSLogger
12
+ requestResponseMessageTimeout: number
13
+ namespace: string
14
+ messageSender: (payload: IIPCMessageProcessorIPCPayload) => void
15
+ }
16
+ /**
17
+ * todo
18
+ * @typedef {Object} options - todo
19
+ * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
20
+ */
21
+ export class IPCMessageManager
22
+ {
23
+ #options: IPCMessageManagerOptions;
24
+ #inflightMessages: Record<string, IIPCMessageProcessorWorkerRecord> = { };
25
+ #messageHeader: string;
26
+
27
+ constructor(options: IPCMessageManagerOptions) {
28
+ this.#options = options;
29
+ this.#messageHeader = `__STS__${this.#options.namespace}__${uuidv4()}`;
30
+ }
31
+
32
+ #LogDebugMessage(message: any) {
33
+ this.#options.logger.debug(message);
34
+ }
35
+
36
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
37
+ ReceivedMessageFromMaster(msg: any) {
38
+ // Override in subclass if required
39
+ }
40
+
41
+ SendMessage = (payload: JSONObject): Promise<JSONObject> => {
42
+ return new Promise((resolve, reject) => {
43
+ this.#SendMessage(payload,
44
+ (payload: IIPCMessageProcessorIPCPayload) => {
45
+ resolve(payload.responsePayload);
46
+ },
47
+ (payload: IIPCMessageProcessorIPCPayload) => {
48
+ reject(payload.requestPayload);
49
+ })
50
+ })
51
+ }
52
+
53
+ #SendMessage = (payload: JSONObject,
54
+ callBack: (payload: IIPCMessageProcessorIPCPayload) => void,
55
+ errorCallBack: (payload: IIPCMessageProcessorIPCPayload) => void
56
+ ): void => {
57
+ const messageId: string = uuidv4();
58
+ const requestPayload: IIPCMessageProcessorIPCPayload = {
59
+ header: this.#messageHeader,
60
+ messageId,
61
+ requestPayload: payload,
62
+ responsePayload: { },
63
+ pid: process.pid.toString(),
64
+ messageType: 'REQUEST'
65
+ }
66
+ const messageRecord = {
67
+ messageId,
68
+ requestPayload,
69
+ responses: { }, // record
70
+ startTime: performance.now(),
71
+ endTime: 0,
72
+ timeout: setTimeout(() => {
73
+ 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)}]`));
74
+ setTimeout(() => {
75
+ delete this.#inflightMessages[messageRecord.messageId];
76
+ }, 0).unref();
77
+ errorCallBack(requestPayload);
78
+ }, this.#options.requestResponseMessageTimeout).unref(),// max message timeout allowed
79
+ callBack,
80
+ errorCallBack
81
+ }
82
+ this.#inflightMessages[messageRecord.messageId] = messageRecord;
83
+ //this.#LogDebugMessage(chalk.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
84
+ this.#options.messageSender(requestPayload);
85
+ }
86
+
87
+ ProcessMessage = (msg: any) => {
88
+ if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
89
+ const message = (msg as IIPCMessageProcessorIPCPayload);
90
+ if (this.#inflightMessages[message.messageId]) {
91
+ const inFlightMessageRecord: IIPCMessageProcessorWorkerRecord = this.#inflightMessages[message.messageId];
92
+ inFlightMessageRecord.responses[message.pid] = { ...message };
93
+ inFlightMessageRecord.endTime = performance.now();
94
+ clearTimeout(inFlightMessageRecord.timeout as NodeJS.Timer);
95
+ //this.#LogDebugMessage(chalk.green(`received: [${JSON.stringify(message)}]`));
96
+ inFlightMessageRecord.callBack(message)
97
+ delete this.#inflightMessages[message.messageId];
98
+ } else {
99
+ throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
100
+ }
101
+ }
102
+ }
103
+
104
+ Start = () => {
105
+ this.#messageHeader = `__STS__${this.#options.namespace}__${uuidv4()}`;
106
+ }
107
+
108
+ Stop = () => {
109
+ // Kill in-flight messages
110
+ for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
111
+ if (iPCMessageProcessorWorkerRecord.timeout) {
112
+ clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
113
+ }
114
+ }
115
+ this.#inflightMessages = { };
116
+ }
117
+ }
@@ -1,15 +1,17 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
2
- import { ISTSLogger } from '@nsshunt/stsutils'
3
- import chalk from 'chalk';
2
+ import { ISTSLogger, JSONObject, defaultLogger } from '@nsshunt/stsutils'
4
3
 
5
4
  import { Worker } from 'node:cluster'
6
5
 
7
6
  import { IIPCMessageProcessorIPCPayload } from './commonTypes'
8
7
 
8
+ import { IPCMessageManager, IPCMessageManagerOptions } from './ipcMessageManager'
9
+
9
10
  export interface IIPCMessageProcessorPrimary {
10
11
  logger: ISTSLogger
11
12
  namespace: string
12
- processCommand: (payload: IIPCMessageProcessorIPCPayload) => Promise<IIPCMessageProcessorIPCPayload>
13
+ processCommand: (payload: IIPCMessageProcessorIPCPayload) => Promise<JSONObject>
14
+ worker: Worker
13
15
  }
14
16
  /**
15
17
  * todo
@@ -19,33 +21,53 @@ export interface IIPCMessageProcessorPrimary {
19
21
  export class IPCMessageProcessorPrimary
20
22
  {
21
23
  #options: IIPCMessageProcessorPrimary;
24
+ #ipcMessageManager: IPCMessageManager;
22
25
 
23
26
  constructor(options: IIPCMessageProcessorPrimary) {
24
27
  this.#options = options;
25
- }
26
28
 
27
- #LogDebugMessage(message: any) {
28
- this.#options.logger.debug(message);
29
+ const ipcMessageManagerOptions: IPCMessageManagerOptions = {
30
+ logger: defaultLogger,
31
+ requestResponseMessageTimeout: 2000,
32
+ namespace: options.namespace,
33
+ messageSender: (payload: IIPCMessageProcessorIPCPayload) => {
34
+ (options.worker as any).send(payload);
35
+ }
36
+ }
37
+ this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
29
38
  }
30
39
 
40
+ // Process a message recieved from a worker
31
41
  #processMessage = async (worker: Worker, msg: any) => {
32
42
  if (msg.header) {
33
43
  const checkName = `__STS__${this.#options.namespace}__`;
34
44
  if ((msg.header as string).includes(checkName)) {
35
45
  const message = (msg as IIPCMessageProcessorIPCPayload);
36
- message.responsePayload = await this.#options.processCommand(message);
37
-
38
- this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
39
- worker.send(message);
46
+ if (msg.messageType.localeCompare('REQUEST') === 0) {
47
+ message.responsePayload = await this.#options.processCommand(message);
48
+ message.messageType = 'RESPONSE'
49
+ //this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
50
+ worker.send(message);
51
+ } else {
52
+ // Received a response (to my request)
53
+ this.#ipcMessageManager.ProcessMessage(msg);
54
+ }
40
55
  }
41
56
  }
42
57
  }
43
58
 
59
+ SendMessage = (payload: JSONObject): Promise<JSONObject> => {
60
+ return this.#ipcMessageManager.SendMessage(payload);
61
+ }
62
+
44
63
  Start = (worker: Worker) => {
64
+ this.#ipcMessageManager.Start();
65
+ // Receive a message to process from a worker
45
66
  worker.on('message', (payload) => this.#processMessage(worker, payload));
46
67
  }
47
68
 
48
69
  Stop = (worker: Worker) => {
49
70
  worker.off('message', (payload) => this.#processMessage(worker, payload));
71
+ this.#ipcMessageManager.Stop();
50
72
  }
51
73
  }
@@ -1,114 +1,68 @@
1
1
  /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
2
- import chalk from 'chalk';
2
+ import { ISTSLogger, JSONObject, defaultLogger } from '@nsshunt/stsutils'
3
3
 
4
- import { ISTSLogger, JSONObject } from '@nsshunt/stsutils'
4
+ import { IIPCMessageProcessorIPCPayload } from './commonTypes'
5
5
 
6
- import { v4 as uuidv4 } from 'uuid';
7
-
8
- import { IIPCMessageProcessorIPCPayload, IIPCMessageProcessorWorkerRecord } from './commonTypes'
6
+ import { IPCMessageManager, IPCMessageManagerOptions } from './ipcMessageManager'
9
7
 
10
8
  export interface IIPCMessageProcessorWorker {
11
9
  logger: ISTSLogger
12
10
  requestResponseMessageTimeout: number
13
11
  namespace: string
12
+ processCommand: (payload: IIPCMessageProcessorIPCPayload) => Promise<JSONObject>
14
13
  }
15
- /**
16
- * todo
17
- * @typedef {Object} options - todo
18
- * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
19
- */
20
- export class IPCMessageProcessorWorker
21
- {
22
- #options: IIPCMessageProcessorWorker;
23
- #inflightMessages: Record<string, IIPCMessageProcessorWorkerRecord> = { };
24
- #messageHeader: string;
14
+
15
+ export class IPCMessageProcessorWorker {
16
+ #options: IIPCMessageProcessorWorker
17
+ #ipcMessageManager: IPCMessageManager;
25
18
 
26
19
  constructor(options: IIPCMessageProcessorWorker) {
27
20
  this.#options = options;
28
- this.#messageHeader = `__STS__${this.#options.namespace}__${uuidv4()}`;
29
- }
30
-
31
- #LogDebugMessage(message: any) {
32
- this.#options.logger.debug(message);
33
- }
34
-
35
- // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
36
- ReceivedMessageFromMaster(msg: any) {
37
- // Override in subclass if required
38
- }
39
-
40
- SendMessage = (payload: JSONObject): Promise<JSONObject> => {
41
- return new Promise((resolve, reject) => {
42
- this.#SendMessageToParentProcess(payload,
43
- (payload: any) => {
44
- resolve(payload);
45
- },
46
- (payload: any) => {
47
- reject(payload);
48
- })
49
- })
50
- }
51
-
52
- #SendMessageToParentProcess = (payload: JSONObject, callBack: (payload: IIPCMessageProcessorIPCPayload) => void, errorCallBack: (payload: IIPCMessageProcessorIPCPayload) => void): void => {
53
- const messageId: string = uuidv4();
54
- const requestPayload: IIPCMessageProcessorIPCPayload = {
55
- header: this.#messageHeader,
56
- messageId,
57
- requestPayload: payload,
58
- responsePayload: { },
59
- pid: process.pid.toString()
60
- }
61
- const messageRecord = {
62
- messageId,
63
- requestPayload,
64
- responses: { }, // record
65
- startTime: performance.now(),
66
- endTime: 0,
67
- timeout: setTimeout(() => {
68
- 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)}]`));
69
- setTimeout(() => {
70
- delete this.#inflightMessages[messageRecord.messageId];
71
- }, 0).unref();
72
- errorCallBack(requestPayload);
73
- }, this.#options.requestResponseMessageTimeout).unref(),// max message timeout allowed
74
- callBack,
75
- errorCallBack
21
+ const ipcMessageManagerOptions: IPCMessageManagerOptions = {
22
+ logger: defaultLogger,
23
+ requestResponseMessageTimeout: options.requestResponseMessageTimeout,
24
+ namespace: options.namespace,
25
+ messageSender: (payload: IIPCMessageProcessorIPCPayload) => {
26
+ (process as any).send(payload);
27
+ }
76
28
  }
77
- this.#inflightMessages[messageRecord.messageId] = messageRecord;
78
- this.#LogDebugMessage(chalk.cyan(`sending: [${JSON.stringify(requestPayload)}]`));
79
- (process as any).send(requestPayload);
29
+ this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
80
30
  }
81
31
 
82
- #processMessage = (msg: any) => {
83
- if (msg.header && msg.header.localeCompare(this.#messageHeader) === 0) {
84
- const message = (msg as IIPCMessageProcessorIPCPayload);
85
- if (this.#inflightMessages[message.messageId]) {
86
- const inFlightMessageRecord: IIPCMessageProcessorWorkerRecord = this.#inflightMessages[message.messageId];
87
- inFlightMessageRecord.responses[message.pid] = { ...message };
88
- inFlightMessageRecord.endTime = performance.now();
89
-
90
- this.#LogDebugMessage(chalk.green(`received: [${JSON.stringify(message)}]`));
91
- inFlightMessageRecord.callBack(message)
92
- } else {
93
- throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
32
+ // Process a message recieved from the primary thread
33
+ #processMessage = async (msg: any) => {
34
+ if (msg.header) {
35
+ const checkName = `__STS__${this.#options.namespace}__`;
36
+ if ((msg.header as string).includes(checkName)) {
37
+ const message = (msg as IIPCMessageProcessorIPCPayload);
38
+ if (msg.messageType.localeCompare('REQUEST') === 0) {
39
+ message.responsePayload = await this.#options.processCommand(message);
40
+ message.messageType = 'RESPONSE';
41
+ //this.#LogDebugMessage(chalk.magenta(`sending: [${JSON.stringify(message)}]`))
42
+ (process as any).send(message);
43
+ } else {
44
+ // Received a response (to my request)
45
+ this.#ipcMessageManager.ProcessMessage(msg);
46
+ }
94
47
  }
95
48
  }
96
49
  }
50
+
51
+ SendMessage = (payload: JSONObject): Promise<JSONObject> => {
52
+ return this.#ipcMessageManager.SendMessage(payload);
53
+ }
97
54
 
98
55
  Start = () => {
99
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
100
- this.#messageHeader = `__STS__${this.#options.namespace}__${uuidv4()}`;
56
+ this.#ipcMessageManager.Start();
57
+
58
+ // Receive a message response back from the primary thread
59
+ //process.on('message', this.#ipcMessageManager.ProcessMessage);
101
60
  process.on('message', this.#processMessage);
102
61
  }
103
62
 
104
63
  Stop = () => {
64
+ //process.off('message', this.#ipcMessageManager.ProcessMessage);
105
65
  process.off('message', this.#processMessage);
106
- // Kill in-flight messages
107
- for (const [, iPCMessageProcessorWorkerRecord] of Object.entries(this.#inflightMessages)) {
108
- if (iPCMessageProcessorWorkerRecord.timeout) {
109
- clearTimeout(iPCMessageProcessorWorkerRecord.timeout);
110
- }
111
- }
112
- this.#inflightMessages = { };
66
+ this.#ipcMessageManager.Stop();
113
67
  }
114
68
  }
@@ -5,93 +5,116 @@ import { WorkerProcess } from './appWorkerWSS'
5
5
 
6
6
  import cluster from 'cluster';
7
7
 
8
- import fs from 'node:fs'
8
+ import { IPCMessageProcessorWorker } from './../ipcMessageProcessorWorker'
9
+ import { Sleep, defaultLogger } from '@nsshunt/stsutils';
9
10
 
10
- //const pid = process.pid;
11
- const pid = 523552
11
+ import { IPCMessageProcessorPrimary } from './../ipcMessageProcessorPrimary'
12
12
 
13
- const filePath = `/proc/${pid}/net/dev`;
13
+ import { IIPCMessageProcessorIPCPayload } from './../commonTypes'
14
14
 
15
- const LogInfoMessage = (message: any) => console.log(message)
16
- const LogErrorMessage = (message: any) => console.error(message)
17
- /*
18
- async function testError() {
19
- throw new Error('some error')
20
- }
21
-
22
- async function testtheerror() {
23
- try {
24
- await testError();
25
- } catch (error) {
26
- this.#LogErrorMessage(`Error2: [${error}]`);
27
- }
28
- }
15
+ import { Worker } from 'node:cluster'
29
16
 
30
- async function testtheerror2(cb: (error: any) => void) {
31
- try {
17
+ import chalk from 'chalk';
32
18
 
33
- cb('some error');
34
-
35
- } catch (error) {
36
- this.#LogErrorMessage(`Error2: [${error}]`);
37
- }
38
- }
39
-
40
- (async () => {
41
- await Sleep(1000);
42
- let z = await testtheerror2((error) => this.#LogInfoMessage(error));
43
- this.#LogInfoMessage(`done.....`);
44
-
45
- process.exit(0);
46
- })();
47
- */
48
-
49
- function getNetworkUsage() {
50
- try {
51
- // Read the contents of the /proc/[pid]/net/dev file
52
- const content = fs.readFileSync(filePath, 'utf8');
53
-
54
- // Process the content to extract relevant information
55
- const lines = content.trim().split('\n');
56
- const headers1 = lines[0].split('|').map(header => header.trim());
57
- const headers2 = lines[1].split('|').map(header => header.trim());
58
- const data = lines[2].split('|').map(value => value.trim());
59
-
60
- LogInfoMessage(data);
61
-
62
- // Find the index of the relevant network statistics (e.g., bytes received and transmitted)
63
- //const rxIndex = headers.indexOf('Receive');
64
- //const txIndex = headers.indexOf('Transmit');
65
-
66
- // Display network usage information
67
- /*
68
- this.#LogInfoMessage(`Network Usage for Process ${pid}:`);
69
- this.#LogInfoMessage(` Incoming: ${data[rxIndex]} bytes`);
70
- this.#LogInfoMessage(` Outgoing: ${data[txIndex]} bytes`);
71
- */
72
- } catch (error) {
73
- LogErrorMessage(`Error reading file: [${error}]`);
74
- }
75
- }
19
+ const sleepVal = 0;
20
+ const maxLoop = 20000;
76
21
 
77
22
  if (cluster.isPrimary) {
78
23
  new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
79
24
 
80
- setInterval(function() {
81
- /*
82
- si.networkStats().then(data => {
83
- this.#LogInfoMessage(data);
84
- });
85
- */
86
-
87
- getNetworkUsage()
88
-
89
- //this.#LogInfoMessage(process.pid)
90
-
91
- //getNetworkUsage()
92
-
93
- }, 1000)
25
+ setTimeout(async () => {
26
+ for (const id in cluster.workers) {
27
+ const p1 = new IPCMessageProcessorPrimary({
28
+ logger: defaultLogger,
29
+ namespace: 'test1',
30
+ processCommand: async (payload: IIPCMessageProcessorIPCPayload) => {
31
+ return {
32
+ msg: `From PRIMARY: [${process.pid}]`,
33
+ yousent: payload.requestPayload,
34
+ hello1: `world1`,
35
+ pid: process.pid
36
+ };
37
+ },
38
+ worker: cluster.workers[id] as Worker
39
+ })
40
+
41
+ const p2 = new IPCMessageProcessorPrimary({
42
+ logger: defaultLogger,
43
+ namespace: 'test2',
44
+ processCommand: async (payload: IIPCMessageProcessorIPCPayload) => {
45
+ return {
46
+ msg: `From PRIMARY: [${process.pid}]`,
47
+ yousent: payload.requestPayload,
48
+ hello2: `world2`,
49
+ pid: process.pid
50
+ };
51
+ },
52
+ worker: cluster.workers[id] as Worker
53
+ })
54
+
55
+ p1.Start(cluster.workers[id] as Worker);
56
+ p2.Start(cluster.workers[id] as Worker);
57
+
58
+ setTimeout(async () => {
59
+ for (let i=0; i < maxLoop; i++) {
60
+ const retVal1 = await p1.SendMessage({
61
+ from1: 'text from 1',
62
+ loop: i
63
+ });
64
+ const retVal2 = await p2.SendMessage({
65
+ from1: 'text from 2',
66
+ loop: i
67
+ });
68
+ console.log(`[${process.pid}] [${JSON.stringify(retVal1)}]`)
69
+ console.log(`[${process.pid}] [${JSON.stringify(retVal2)}]`)
70
+
71
+ await Sleep(sleepVal);
72
+ }
73
+ }, 1000);
74
+ }
75
+ }, 1000);
94
76
 
95
77
  } else {
96
78
  new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
79
+
80
+ const w1 = new IPCMessageProcessorWorker({
81
+ logger: defaultLogger,
82
+ namespace: 'test1',
83
+ requestResponseMessageTimeout: 2000,
84
+ processCommand: async (payload) => {
85
+ return {
86
+ msg: `From WORKER: [${process.pid}]`,
87
+ yousent1: payload.requestPayload,
88
+ pid: process.pid
89
+ }
90
+ }
91
+ })
92
+
93
+ const w2 = new IPCMessageProcessorWorker({
94
+ logger: defaultLogger,
95
+ namespace: 'test2',
96
+ requestResponseMessageTimeout: 2000,
97
+ processCommand: async (payload) => {
98
+ return {
99
+ msg: `From WORKER: [${process.pid}]`,
100
+ yousent2: payload.requestPayload,
101
+ pid: process.pid
102
+ }
103
+ }
104
+ })
105
+
106
+ w1.Start();
107
+ w2.Start();
108
+
109
+ setTimeout(async () => {
110
+ for (let i=0; i < maxLoop; i++) {
111
+ const retVal1 = await w1.SendMessage({hello:`from worker 1: ${i}`});
112
+ console.log(chalk.blue(` ==> [${process.pid}] [${JSON.stringify(retVal1)}]`));
113
+
114
+ const retVal2 = await w2.SendMessage({hello:`from worker 2: ${i}`});
115
+ console.log(chalk.blue(` ==> [${process.pid}] [${JSON.stringify(retVal2)}]`));
116
+
117
+ await Sleep(sleepVal);
118
+ }
119
+ }, 1000);
97
120
  }
@@ -35,7 +35,7 @@ export function ServiceConfigOptions(clusterMode: boolean, isMaster: boolean): P
35
35
  );
36
36
 
37
37
  const logger = winston.createLogger({
38
- level: 'silly',
38
+ level: 'debug',
39
39
  format: winston.format.combine(
40
40
  winston.format.colorize(),
41
41
  winston.format.simple()
@@ -174,6 +174,7 @@ export interface IIPCMessageProcessorIPCPayload {
174
174
  requestPayload: JSONObject;
175
175
  responsePayload: JSONObject;
176
176
  pid: string;
177
+ messageType: 'REQUEST' | 'RESPONSE';
177
178
  }
178
179
  export interface IIPCMessageProcessorWorkerRecord {
179
180
  messageId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commonTypes.d.ts","sourceRoot":"","sources":["../src/commonTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { ISTSLogger, JSONObject } from '@nsshunt/stsutils';
2
+ import { IIPCMessageProcessorIPCPayload } from './commonTypes';
3
+ export interface IPCMessageManagerOptions {
4
+ logger: ISTSLogger;
5
+ requestResponseMessageTimeout: number;
6
+ namespace: string;
7
+ messageSender: (payload: IIPCMessageProcessorIPCPayload) => void;
8
+ }
9
+ /**
10
+ * todo
11
+ * @typedef {Object} options - todo
12
+ * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
13
+ */
14
+ export declare class IPCMessageManager {
15
+ #private;
16
+ constructor(options: IPCMessageManagerOptions);
17
+ ReceivedMessageFromMaster(msg: any): void;
18
+ SendMessage: (payload: JSONObject) => Promise<JSONObject>;
19
+ ProcessMessage: (msg: any) => void;
20
+ Start: () => void;
21
+ Stop: () => void;
22
+ }
23
+ //# sourceMappingURL=ipcMessageManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipcMessageManager.d.ts","sourceRoot":"","sources":["../src/ipcMessageManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAI1D,OAAO,EAAE,8BAA8B,EAAoC,MAAM,eAAe,CAAA;AAEhG,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,UAAU,CAAA;IAClB,6BAA6B,EAAE,MAAM,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,aAAa,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,IAAI,CAAA;CACnE;AACD;;;;GAIG;AACH,qBAAa,iBAAiB;;gBAMd,OAAO,EAAE,wBAAwB;IAU7C,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIlC,WAAW,YAAa,UAAU,KAAG,QAAQ,UAAU,CAAC,CAUvD;IAoCD,cAAc,QAAS,GAAG,UAezB;IAED,KAAK,aAEJ;IAED,IAAI,aAQH;CACJ"}
@@ -1,11 +1,12 @@
1
1
  /// <reference types="node" />
2
- import { ISTSLogger } from '@nsshunt/stsutils';
2
+ import { ISTSLogger, JSONObject } from '@nsshunt/stsutils';
3
3
  import { Worker } from 'node:cluster';
4
4
  import { IIPCMessageProcessorIPCPayload } from './commonTypes';
5
5
  export interface IIPCMessageProcessorPrimary {
6
6
  logger: ISTSLogger;
7
7
  namespace: string;
8
- processCommand: (payload: IIPCMessageProcessorIPCPayload) => Promise<IIPCMessageProcessorIPCPayload>;
8
+ processCommand: (payload: IIPCMessageProcessorIPCPayload) => Promise<JSONObject>;
9
+ worker: Worker;
9
10
  }
10
11
  /**
11
12
  * todo
@@ -15,6 +16,7 @@ export interface IIPCMessageProcessorPrimary {
15
16
  export declare class IPCMessageProcessorPrimary {
16
17
  #private;
17
18
  constructor(options: IIPCMessageProcessorPrimary);
19
+ SendMessage: (payload: JSONObject) => Promise<JSONObject>;
18
20
  Start: (worker: Worker) => void;
19
21
  Stop: (worker: Worker) => void;
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ipcMessageProcessorPrimary.d.ts","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAE9D,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,UAAU,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,8BAA8B,CAAC,CAAA;CACvG;AACD;;;;GAIG;AACH,qBAAa,0BAA0B;;gBAIvB,OAAO,EAAE,2BAA2B;IAqBhD,KAAK,WAAY,MAAM,UAEtB;IAED,IAAI,WAAY,MAAM,UAErB;CACJ"}
1
+ {"version":3,"file":"ipcMessageProcessorPrimary.d.ts","sourceRoot":"","sources":["../src/ipcMessageProcessorPrimary.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAI9D,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,UAAU,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IAChF,MAAM,EAAE,MAAM,CAAA;CACjB;AACD;;;;GAIG;AACH,qBAAa,0BAA0B;;gBAKvB,OAAO,EAAE,2BAA2B;IAiChD,WAAW,YAAa,UAAU,KAAG,QAAQ,UAAU,CAAC,CAEvD;IAED,KAAK,WAAY,MAAM,UAItB;IAED,IAAI,WAAY,MAAM,UAGrB;CACJ"}
@@ -1,18 +1,14 @@
1
1
  import { ISTSLogger, JSONObject } from '@nsshunt/stsutils';
2
+ import { IIPCMessageProcessorIPCPayload } from './commonTypes';
2
3
  export interface IIPCMessageProcessorWorker {
3
4
  logger: ISTSLogger;
4
5
  requestResponseMessageTimeout: number;
5
6
  namespace: string;
7
+ processCommand: (payload: IIPCMessageProcessorIPCPayload) => Promise<JSONObject>;
6
8
  }
7
- /**
8
- * todo
9
- * @typedef {Object} options - todo
10
- * @property {boolean} [wssServer=false] - Create a web socket server on this worker instance
11
- */
12
9
  export declare class IPCMessageProcessorWorker {
13
10
  #private;
14
11
  constructor(options: IIPCMessageProcessorWorker);
15
- ReceivedMessageFromMaster(msg: any): void;
16
12
  SendMessage: (payload: JSONObject) => Promise<JSONObject>;
17
13
  Start: () => void;
18
14
  Stop: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"ipcMessageProcessorWorker.d.ts","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAM1D,MAAM,WAAW,0BAA0B;IACvC,MAAM,EAAE,UAAU,CAAA;IAClB,6BAA6B,EAAE,MAAM,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;CACpB;AACD;;;;GAIG;AACH,qBAAa,yBAAyB;;gBAMtB,OAAO,EAAE,0BAA0B;IAU/C,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIlC,WAAW,YAAa,UAAU,KAAG,QAAQ,UAAU,CAAC,CAUvD;IAgDD,KAAK,aAIJ;IAED,IAAI,aASH;CACJ"}
1
+ {"version":3,"file":"ipcMessageProcessorWorker.d.ts","sourceRoot":"","sources":["../src/ipcMessageProcessorWorker.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAA;AAEzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,eAAe,CAAA;AAI9D,MAAM,WAAW,0BAA0B;IACvC,MAAM,EAAE,UAAU,CAAA;IAClB,6BAA6B,EAAE,MAAM,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,CAAC,OAAO,EAAE,8BAA8B,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;CACnF;AAED,qBAAa,yBAAyB;;gBAItB,OAAO,EAAE,0BAA0B;IAgC/C,WAAW,YAAa,UAAU,KAAG,QAAQ,UAAU,CAAC,CAEvD;IAED,KAAK,aAMJ;IAED,IAAI,aAIH;CACJ"}