@nsshunt/stsrunnerframework 2.0.33 → 2.0.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.cjs CHANGED
@@ -66,6 +66,8 @@ var eIWMessageCommands = /* @__PURE__ */ function(eIWMessageCommands) {
66
66
  eIWMessageCommands["GetRunnersResponse"] = "__STS__GetRunnersResponse";
67
67
  eIWMessageCommands["PostWorkerMessage"] = "__STS__PostWorkerMessage";
68
68
  eIWMessageCommands["PostWorkerMessageResponse"] = "__STS__PostWorkerMessageResponse";
69
+ eIWMessageCommands["PostWorkerPreTerminateMessage"] = "__STS__PostWorkerPreTerminateMessage";
70
+ eIWMessageCommands["PostWorkerPreTerminateMessageResponse"] = "__STS__PostWorkerPreTerminateMessageResponse";
69
71
  return eIWMessageCommands;
70
72
  }({});
71
73
  var IRunnerState = /* @__PURE__ */ function(IRunnerState) {
@@ -1037,6 +1039,25 @@ var AbstractRunnerExecutionWorker = class {
1037
1039
  this.#error(`#PostWorkerMessageToWorkerManager(): [${error}]`);
1038
1040
  }
1039
1041
  };
1042
+ #PostWorkerPreTerminateMessageToWorkerManager = async (messagePayload) => {
1043
+ try {
1044
+ if (this.#collectorCollectorPort) {
1045
+ const response = await this.ProcessPreTerminateWorkerMessage(messagePayload);
1046
+ const message = {
1047
+ command: eIWMessageCommands.PostWorkerMessageResponse,
1048
+ payload: {
1049
+ messageId: messagePayload.payload.messageId,
1050
+ workerId: this.#workerId,
1051
+ response
1052
+ }
1053
+ };
1054
+ this.#collectorCollectorPort.postMessage(message);
1055
+ await (0, _nsshunt_stsutils.Sleep)(0);
1056
+ }
1057
+ } catch (error) {
1058
+ this.#error(`#PostWorkerPreTerminateMessageToWorkerManager(): [${error}]`);
1059
+ }
1060
+ };
1040
1061
  /**
1041
1062
  * Start a runner and, if valid, launch its execution loop.
1042
1063
  *
@@ -1420,6 +1441,9 @@ var AbstractRunnerExecutionWorker = class {
1420
1441
  async ProcessGenericWorkerMessage(messagePayload) {
1421
1442
  return {};
1422
1443
  }
1444
+ async ProcessPreTerminateWorkerMessage(messagePayload) {
1445
+ return {};
1446
+ }
1423
1447
  /**
1424
1448
  * Main inbound message dispatcher for this worker runtime.
1425
1449
  *
@@ -1503,6 +1527,10 @@ var AbstractRunnerExecutionWorker = class {
1503
1527
  this.#silly(`ProcessMessage::PostWorkerMessage`);
1504
1528
  this.#PostWorkerMessageToWorkerManager(payloadMessage);
1505
1529
  break;
1530
+ case eIWMessageCommands.PostWorkerPreTerminateMessage:
1531
+ this.#silly(`ProcessMessage::PostWorkerPreTerminateMessage`);
1532
+ this.#PostWorkerPreTerminateMessageToWorkerManager(payloadMessage);
1533
+ break;
1506
1534
  default: this.#warn(`ProcessMessage::default: Invalid payloadMessage.command: [${payloadMessage.command}] - Ignoring`);
1507
1535
  }
1508
1536
  } catch (error) {
@@ -4486,13 +4514,24 @@ var WorkerInstance = class {
4486
4514
  try {
4487
4515
  const runners = this.GetAllRunnersEx();
4488
4516
  const promArray = [];
4517
+ const microDelayForPreTerminate = 500;
4518
+ const microDelayForTerminate = 500;
4489
4519
  for (let i = 0; i < runners.length; i++) promArray.push(runners[i].Terminate());
4490
4520
  const retVal = Promise.all(promArray);
4491
- if (this.worker) setTimeout(() => {
4492
- this.worker.terminate();
4493
- this.#logger.debug(`_TerminateWorker(): Terminated worker: [${this.id}]`);
4494
- this.#workerRegistry.DeleteWorker(this.id);
4495
- }, 500);
4521
+ if (this.worker) {
4522
+ await (0, _nsshunt_stsutils.Sleep)(microDelayForPreTerminate);
4523
+ this.#logger.debug(chalk.rgb(150, 170, 90)(`Terminate(): Sending Pre Terminate worker command ...`));
4524
+ const retValPreTerminate = await this.#messageBroker.SendMessageToWorkerForWorkerWithCallBack(this, eIWMessageCommands.PostWorkerPreTerminateMessage, {});
4525
+ this.#logger.debug(chalk.rgb(150, 170, 90)(`Terminate(): Pre Terminate worker response: [${JSON.stringify(retValPreTerminate, null, 2)}]`));
4526
+ }
4527
+ setTimeout(() => {
4528
+ if (this.worker) if (this.options.mocked === false) {
4529
+ this.worker.terminate();
4530
+ this.#logger.debug(`Terminate(): Terminated worker: [${this.id}]`);
4531
+ this.#workerRegistry.DeleteWorker(this.id);
4532
+ } else this.#logger.debug(`Terminate(): Terminated worker: [${this.id}] (Mocked)`);
4533
+ else this.#logger.warn(`Terminate(): Could not terminate worker: [${this.id}] - this.worker not set`);
4534
+ }, microDelayForTerminate);
4496
4535
  return retVal;
4497
4536
  } catch (error) {
4498
4537
  this.#logger.error(`_TerminateWorker(): Error: [${error}]`);
@@ -6612,7 +6651,7 @@ var STSWorkerManager = class {
6612
6651
  * - this does not automatically terminate all workers
6613
6652
  * - callers should explicitly terminate workers first if desired
6614
6653
  */
6615
- Terminate() {
6654
+ async Terminate() {
6616
6655
  this.options.logger.debug(`STSWorkerManager:Terminate()`);
6617
6656
  this.#archiveManager.Terminate();
6618
6657
  }
@@ -6683,7 +6722,7 @@ var STSWorkerManager = class {
6683
6722
  };
6684
6723
  };
6685
6724
  //#endregion
6686
- //#region node_modules/@nsshunt/stssocketioutils/dist/tiny-emitter-DcZ69ZvJ.js
6725
+ //#region node_modules/@nsshunt/stssocketioutils/dist/tiny-emitter-Ci1ma0VV.js
6687
6726
  var __commonJSMin = (cb, mod) => () => (mod || (cb((mod = { exports: {} }).exports, mod), cb = null), mod.exports);
6688
6727
  var require_tiny_emitter = /* @__PURE__ */ __commonJSMin(((exports, module) => {
6689
6728
  function E() {}
@@ -7433,8 +7472,8 @@ var BaseXHR = class extends Polling {
7433
7472
  /**
7434
7473
  * Sends data.
7435
7474
  *
7436
- * @param {String} data to send.
7437
- * @param {Function} called upon flush.
7475
+ * @param {String} data - data to send.
7476
+ * @param {Function} fn - called upon flush.
7438
7477
  * @private
7439
7478
  */
7440
7479
  doWrite(data, fn) {
@@ -8165,7 +8204,7 @@ var SocketWithoutUpgrade = class SocketWithoutUpgrade extends Emitter {
8165
8204
  /**
8166
8205
  * Sends a packet.
8167
8206
  *
8168
- * @param {String} type: packet type.
8207
+ * @param {String} type - packet type.
8169
8208
  * @param {String} data.
8170
8209
  * @param {Object} options.
8171
8210
  * @param {Function} fn - callback function.