@nsshunt/stsappframework 3.1.117 → 3.1.120

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.
Files changed (95) hide show
  1. package/dist/authutilsnode.js +9 -10
  2. package/dist/authutilsnode.js.map +1 -1
  3. package/dist/influxdb/influxDBManager.js +9 -10
  4. package/dist/influxdb/influxDBManager.js.map +1 -1
  5. package/dist/ipcMessageHandler.js +171 -0
  6. package/dist/ipcMessageHandler.js.map +1 -0
  7. package/dist/ipcMessageManager.js +15 -5
  8. package/dist/ipcMessageManager.js.map +1 -1
  9. package/dist/ipcMessageProcessorPrimary.js +1 -0
  10. package/dist/ipcMessageProcessorPrimary.js.map +1 -1
  11. package/dist/ipcMessageProcessorWorker.js +1 -0
  12. package/dist/ipcMessageProcessorWorker.js.map +1 -1
  13. package/dist/kafka/IMKafkaManager.js +13 -14
  14. package/dist/kafka/IMKafkaManager.js.map +1 -1
  15. package/dist/masterprocessbase.js +7 -8
  16. package/dist/masterprocessbase.js.map +1 -1
  17. package/dist/processbase.js +13 -14
  18. package/dist/processbase.js.map +1 -1
  19. package/dist/redisMessageHandler.js +212 -0
  20. package/dist/redisMessageHandler.js.map +1 -0
  21. package/dist/redisMessageHandler.test.js +127 -0
  22. package/dist/redisMessageHandler.test.js.map +1 -0
  23. package/dist/server.js +3 -4
  24. package/dist/server.js.map +1 -1
  25. package/dist/serverprocessbase.js +1 -2
  26. package/dist/serverprocessbase.js.map +1 -1
  27. package/dist/singleprocessbase.js +2 -3
  28. package/dist/singleprocessbase.js.map +1 -1
  29. package/dist/tcpserver/appConfig.js +12 -13
  30. package/dist/tcpserver/appConfig.js.map +1 -1
  31. package/dist/testHelpers.js +11 -13
  32. package/dist/testHelpers.js.map +1 -1
  33. package/dist/testing/app.js +112 -5
  34. package/dist/testing/app.js.map +1 -1
  35. package/dist/testing/appConfig.js +13 -14
  36. package/dist/testing/appConfig.js.map +1 -1
  37. package/dist/testing/server.js +1 -2
  38. package/dist/testing/server.js.map +1 -1
  39. package/dist/vitesttesting/appConfig.js +13 -14
  40. package/dist/vitesttesting/appConfig.js.map +1 -1
  41. package/dist/vitesttesting/server.js +1 -2
  42. package/dist/vitesttesting/server.js.map +1 -1
  43. package/dist/vitesttesting/singleservertest.test.js +12 -13
  44. package/dist/vitesttesting/singleservertest.test.js.map +1 -1
  45. package/package.json +3 -3
  46. package/runtest2.sh +1 -1
  47. package/src/authutilsnode.ts +1 -2
  48. package/src/commonTypes.ts +1 -0
  49. package/src/influxdb/influxDBManager.ts +1 -2
  50. package/src/ipcMessageHandler.ts +181 -0
  51. package/src/ipcMessageManager.ts +19 -9
  52. package/src/ipcMessageProcessorPrimary.ts +1 -0
  53. package/src/ipcMessageProcessorWorker.ts +1 -0
  54. package/src/kafka/IMKafkaManager.ts +1 -2
  55. package/src/masterprocessbase.ts +1 -2
  56. package/src/processbase.ts +1 -2
  57. package/src/redisMessageHandler.test.ts +155 -0
  58. package/src/redisMessageHandler.ts +256 -0
  59. package/src/server.ts +1 -2
  60. package/src/serverprocessbase.ts +1 -2
  61. package/src/singleprocessbase.ts +1 -2
  62. package/src/tcpserver/appConfig.ts +1 -2
  63. package/src/testHelpers.ts +1 -3
  64. package/src/testing/app.ts +132 -8
  65. package/src/testing/appConfig.ts +1 -2
  66. package/src/testing/server.ts +1 -2
  67. package/src/vitesttesting/appConfig.ts +1 -2
  68. package/src/vitesttesting/server.ts +1 -2
  69. package/src/vitesttesting/singleservertest.test.ts +1 -2
  70. package/types/authutilsnode.d.ts.map +1 -1
  71. package/types/commonTypes.d.ts +1 -0
  72. package/types/commonTypes.d.ts.map +1 -1
  73. package/types/influxdb/influxDBManager.d.ts.map +1 -1
  74. package/types/ipcMessageHandler.d.ts +24 -0
  75. package/types/ipcMessageHandler.d.ts.map +1 -0
  76. package/types/ipcMessageManager.d.ts +4 -3
  77. package/types/ipcMessageManager.d.ts.map +1 -1
  78. package/types/ipcMessageProcessorPrimary.d.ts.map +1 -1
  79. package/types/ipcMessageProcessorWorker.d.ts.map +1 -1
  80. package/types/kafka/IMKafkaManager.d.ts.map +1 -1
  81. package/types/masterprocessbase.d.ts.map +1 -1
  82. package/types/processbase.d.ts.map +1 -1
  83. package/types/redisMessageHandler.d.ts +35 -0
  84. package/types/redisMessageHandler.d.ts.map +1 -0
  85. package/types/redisMessageHandler.test.d.ts +2 -0
  86. package/types/redisMessageHandler.test.d.ts.map +1 -0
  87. package/types/server.d.ts.map +1 -1
  88. package/types/serverprocessbase.d.ts.map +1 -1
  89. package/types/singleprocessbase.d.ts.map +1 -1
  90. package/types/tcpserver/appConfig.d.ts.map +1 -1
  91. package/types/testHelpers.d.ts.map +1 -1
  92. package/types/testing/appConfig.d.ts.map +1 -1
  93. package/types/testing/server.d.ts.map +1 -1
  94. package/types/vitesttesting/appConfig.d.ts.map +1 -1
  95. package/types/vitesttesting/server.d.ts.map +1 -1
@@ -34,7 +34,6 @@ const stsutils_1 = require("@nsshunt/stsutils");
34
34
  const appSingleWSS_1 = require("./appSingleWSS");
35
35
  const appConfig_1 = require("./appConfig");
36
36
  const stsconfig_1 = require("@nsshunt/stsconfig");
37
- const goptions = (0, stsconfig_1.$Options)();
38
37
  const https = __importStar(require("node:https"));
39
38
  const vitest_1 = require("vitest");
40
39
  const stsobservability_1 = require("@nsshunt/stsobservability");
@@ -45,16 +44,16 @@ const index_1 = require("./../index");
45
44
  const endpoint = 'https://localhost';
46
45
  const socketUtilsoptions = {
47
46
  agentOptions: {
48
- keepAlive: goptions.keepAlive,
49
- maxSockets: goptions.maxSockets,
50
- maxTotalSockets: goptions.maxTotalSockets,
51
- maxFreeSockets: goptions.maxFreeSockets,
47
+ keepAlive: stsconfig_1.goptions.keepAlive,
48
+ maxSockets: stsconfig_1.goptions.maxSockets,
49
+ maxTotalSockets: stsconfig_1.goptions.maxTotalSockets,
50
+ maxFreeSockets: stsconfig_1.goptions.maxFreeSockets,
52
51
  timeout: 30000, //@@ config
53
- rejectUnauthorized: goptions.isProduction // Allows self signed certs in non production mode(s)
52
+ rejectUnauthorized: stsconfig_1.goptions.isProduction // Allows self signed certs in non production mode(s)
54
53
  }
55
54
  };
56
55
  const socketUtils = new stsobservability_1.SocketIoClientHelper(socketUtilsoptions);
57
- const instrumentManagerAddress = `${endpoint}:${goptions.rest01port}/${index_1.STSNamespace.STSMonitor}/`;
56
+ const instrumentManagerAddress = `${endpoint}:${stsconfig_1.goptions.rest01port}/${index_1.STSNamespace.STSMonitor}/`;
58
57
  const LogInfoMessage = (message) => console.log(chalk_1.default.green(`info: ${message}`));
59
58
  const LogErrorMessage = (message) => console.error(chalk_1.default.red(`error: ${message}`));
60
59
  const LogDebugMessage = (message) => console.log(chalk_1.default.blue(`debug: ${message}`));
@@ -85,15 +84,15 @@ const index_1 = require("./../index");
85
84
  }
86
85
  };
87
86
  httpsAgent = new https.Agent({
88
- keepAlive: goptions.keepAlive,
89
- maxSockets: goptions.maxSockets,
90
- maxTotalSockets: goptions.maxTotalSockets,
91
- maxFreeSockets: goptions.maxFreeSockets,
92
- timeout: goptions.timeout,
87
+ keepAlive: stsconfig_1.goptions.keepAlive,
88
+ maxSockets: stsconfig_1.goptions.maxSockets,
89
+ maxTotalSockets: stsconfig_1.goptions.maxTotalSockets,
90
+ maxFreeSockets: stsconfig_1.goptions.maxFreeSockets,
91
+ timeout: stsconfig_1.goptions.timeout,
93
92
  rejectUnauthorized: false
94
93
  });
95
94
  const getLatency = async () => {
96
- const url = `${endpoint}:${goptions.rest01port}${goptions.rest01apiroot}/latency`;
95
+ const url = `${endpoint}:${stsconfig_1.goptions.rest01port}${stsconfig_1.goptions.rest01apiroot}/latency`;
97
96
  try {
98
97
  const headers = {
99
98
  'Content-Type': 'application/json',
@@ -1 +1 @@
1
- {"version":3,"file":"singleservertest.test.js","sourceRoot":"","sources":["../../src/vitesttesting/singleservertest.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"singleservertest.test.js","sourceRoot":"","sources":["../../src/vitesttesting/singleservertest.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kDAAkD,CAAE,UAAU;AAC9D,kDAA0B;AAE1B,kDAAyD;AAEzD,gDAAyC;AACzC,6DAA6D;AAE7D,iDAA6C;AAE7C,2CAAkD;AAElD,kDAA6C;AAE7C,kDAAmC;AAEnC,mCAAqE;AAErE,gEAA8F;AAE9F,sCAAyC;AAKzC,IAAA,iBAAQ,EAAC,oBAAoB,EAAE,GAAG,EAAE;IAEhC,IAAI,GAAG,GAAwB,IAAI,CAAC;IACpC,IAAI,UAAU,GAAuB,IAAI,CAAC;IAE1C,MAAM,QAAQ,GAAG,mBAAmB,CAAA;IAEpC,MAAM,kBAAkB,GAAiC;QACrD,YAAY,EAAE;YACV,SAAS,EAAE,oBAAQ,CAAC,SAAS;YAC7B,UAAU,EAAE,oBAAQ,CAAC,UAAU;YAC/B,eAAe,EAAE,oBAAQ,CAAC,eAAe;YACzC,cAAc,EAAE,oBAAQ,CAAC,cAAc;YACvC,OAAO,EAAE,KAAK,EAAE,WAAW;YAC3B,kBAAkB,EAAE,oBAAQ,CAAC,YAAY,CAAC,qDAAqD;SAClG;KACJ,CAAA;IAED,MAAM,WAAW,GAAG,IAAI,uCAAoB,CAA6C,kBAAkB,CAAC,CAAC;IAE7G,MAAM,wBAAwB,GAC1B,GAAG,QAAQ,IAAI,oBAAQ,CAAC,UAAU,IAAI,oBAAY,CAAC,UAAU,GAAG,CAAC;IAErE,MAAM,cAAc,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,SAAS,OAAO,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IACxF,MAAM,eAAe,GAAG,CAAC,OAAY,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC;IAEvF,MAAM,WAAW,GAAG,CAAC,KAAU,EAAE,EAAE;QAC/B,eAAe,CAAC,eAAK,CAAC,GAAG,CAAC,0BAA0B,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,eAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAe,KAAK,CAAC;YACrC,IAAI,UAAU,CAAC,QAAQ,EAAE,CAAC;gBACtB,eAAe,CAAC,eAAK,CAAC,GAAG,CAAC,kCAAkC,UAAU,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBAC5F,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAC9B,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC7F,CAAC;gBACD,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;oBAC3B,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBACvF,CAAC;gBACD,IAAI,CAAC;oBACD,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;wBAC7B,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC3F,CAAC;gBACL,CAAC;gBAAC,OAAO,UAAe,EAAE,CAAC;oBACvB,cAAc,CAAC,eAAK,CAAC,GAAG,CAAC,4CAA4C,UAAU,GAAG,CAAC,CAAC,CAAC;gBACzF,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,eAAe,CAAC,eAAK,CAAC,GAAG,CAAC,iCAAiC,UAAU,GAAG,CAAC,CAAC,CAAC;YAC/E,CAAC;QACL,CAAC;IACL,CAAC,CAAA;IAED,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC;QACzB,SAAS,EAAE,oBAAQ,CAAC,SAAS;QAC7B,UAAU,EAAE,oBAAQ,CAAC,UAAU;QAC/B,eAAe,EAAE,oBAAQ,CAAC,eAAe;QACzC,cAAc,EAAE,oBAAQ,CAAC,cAAc;QACvC,OAAO,EAAE,oBAAQ,CAAC,OAAO;QACzB,kBAAkB,EAAE,KAAK;KAC5B,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,KAAK,IAAmC,EAAE;QACzD,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,oBAAQ,CAAC,UAAU,GAAG,oBAAQ,CAAC,aAAa,UAAU,CAAC;QAClF,IAAI,CAAC;YACD,MAAM,OAAO,GAAG;gBACZ,cAAc,EAAE,kBAAkB;aACrC,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,IAAA,eAAK,EAAC;gBACvB,GAAG,EAAE,GAAG;gBACP,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,OAAO;gBAChB,UAAU,EAAE,UAAU;aAC1B,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAClB,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,WAAW,CAAC,KAAK,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC,CAAA;IAED,IAAA,kBAAS,EAAC,KAAK,IAAI,EAAE;QAEjB,MAAM,UAAU,GAAG,IAAA,gCAAoB,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACrD,UAAU,CAAC,sBAAsB,GAAG,KAAK,CAAC;QAC1C,GAAG,GAAG,IAAI,2BAAY,CAAC,UAAU,CAAC,CAAA;QAClC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;IACtB,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,iBAAQ,EAAC,KAAK,IAAI,EAAE;QAEhB,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;QAEjB,MAAM,IAAA,gBAAK,EAAC,IAAI,CAAC,CAAC;QAClB,GAAG,GAAG,IAAI,CAAC;IACf,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,aAAI,EAAC,gBAAgB,EAAE,KAAK,IAAI,EAAE;QAE9B,eAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACrB,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,GAAG,GAAG,EAAE,CAAC;QACf,eAAM,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAC,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;YACpC,IAAA,eAAM,EAAC,SAAS,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YAChD,IAAA,eAAM,EAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;IACL,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAA,aAAI,EAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QAErC,eAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,MAAM,MAAM,GAAG,WAAW,CAAC,qBAAqB,CAAC,WAAW;QACxD,2EAA2E;QAC3E,wBAAwB;QACxB,sBAAsB;QACtB,8DAA8D;QAC9D,CAAC,MAA0D,EAAE,EAAE;YAC3D,eAAe,CAAC,eAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;YAC9C,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,gBAAgB;QAChB,CAAC,MAA0D,EAAE,EAAE;YAC3D,MAAM,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,IAAS,EAAE,EAAE;gBACpC,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9C,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAS,EAAE,EAAE;gBACtC,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAChD,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,uBAAuB,EAAE,CAAC,IAAS,EAAE,EAAE;gBAC7C,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,uBAAuB,CAAC,CAAC,CAAC;gBACvD,IAAA,eAAM,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;gBAC5B,eAAe,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzC,IAAA,eAAM,EAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;gBACjB,QAAQ,GAAG,IAAI,CAAC;YACpB,CAAC,CAAC,CAAC;QACP,CAAC,EACD,CAAC,KAAY,EAAE,EAAE;YACb,eAAe,CAAC,qCAAqC,KAAK,GAAG,CAAC,CAAC;QACnE,CAAC,CACJ,CAAA;QAED,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEzE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;QAChD,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;QAEhD,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,YAAY,EAAC,CAAC,CAAC;QAElD,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC;QAEjD,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,EAAC,CAAC,CAAA;QAC1F,sBAAsB;QAEtB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACjD,IAAI,GAAG,EAAE,CAAC;gBACN,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAA,eAAM,EAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAClD,IAAI,GAAG,EAAE,CAAC;gBACN,cAAc,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;iBAAM,CAAC;gBACJ,IAAA,eAAM,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACjC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAA,gBAAK,EAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IAEL,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nsshunt/stsappframework",
3
- "version": "3.1.117",
3
+ "version": "3.1.120",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "./types/index.d.ts",
@@ -48,8 +48,8 @@
48
48
  "@grpc/proto-loader": "^0.7.13",
49
49
  "@influxdata/influxdb-client": "^1.33.2",
50
50
  "@influxdata/influxdb-client-apis": "^1.33.2",
51
- "@nsshunt/stsconfig": "^1.25.127",
52
- "@nsshunt/stsdatamanagement": "^1.18.40",
51
+ "@nsshunt/stsconfig": "^1.25.130",
52
+ "@nsshunt/stsdatamanagement": "^1.18.41",
53
53
  "@nsshunt/stsobservability": "^1.0.28",
54
54
  "@nsshunt/stsutils": "^1.16.59",
55
55
  "@socket.io/cluster-adapter": "^0.2.2",
package/runtest2.sh CHANGED
@@ -6,7 +6,7 @@ STSENVFILE=$STS_PROJ_ROOT/stsglobalresources/.env \
6
6
  REST01_PORT=3003 \
7
7
  REST01_HOST_PORT=3003 \
8
8
  REST01_ENDPOINT="https://stscore.stsmda.org" \
9
- MAX_CPU=2 \
9
+ MAX_CPU=4 \
10
10
  AS_ENDPOINT=https://stscore.stsmda.org \
11
11
  AS_HOST_PORT=3002 \
12
12
  AS_PORT=3002 \
@@ -6,8 +6,7 @@ import jwksClient from 'jwks-rsa';
6
6
 
7
7
  import axios from 'axios';
8
8
 
9
- import { $Options } from '@nsshunt/stsconfig'
10
- const goptions = $Options()
9
+ import { goptions } from '@nsshunt/stsconfig'
11
10
 
12
11
  import { GetErrorPayload, ISTSLogger, JSONObject } from '@nsshunt/stsutils'
13
12
 
@@ -268,6 +268,7 @@ export interface IIPCMessageProcessorIPCPayload {
268
268
  header: string
269
269
  messageId: string
270
270
  senderId: string
271
+ senderRole: string
271
272
  requestPayload: JSONObject
272
273
  responsePayload: JSONObject
273
274
  pid: string
@@ -6,9 +6,8 @@ import { Agent } from 'http'
6
6
 
7
7
  import chalk from 'chalk';
8
8
 
9
- import { $Options } from '@nsshunt/stsconfig'
9
+ import { goptions } from '@nsshunt/stsconfig'
10
10
  import { ISTSLogger, JSONObject } from '@nsshunt/stsutils'
11
- const goptions = $Options()
12
11
 
13
12
  import { InfluxDBManagerBase } from './influxDBManagerBase'
14
13
  import { InfluxDBManagerService} from './influxDBManagerService'
@@ -0,0 +1,181 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF */ // --> OFF
2
+ import { TinyEmitter } from "tiny-emitter";
3
+ import cluster, { Worker } from 'node:cluster'
4
+ import { ISTSLogger, JSONObject, defaultLogger } from '@nsshunt/stsutils'
5
+
6
+ import { IIPCMessageProcessorIPCPayload } from './commonTypes'
7
+
8
+ import { IPCMessageManager, IPCMessageManagerOptions } from './ipcMessageManager'
9
+
10
+ export interface IPCMessageHandlerOptions {
11
+ logger: ISTSLogger
12
+ requestResponseMessageTimeout: number
13
+ namespace: string
14
+ //processPayload?: (payload: IIPCMessageProcessorIPCPayload, options: any) => Promise<JSONObject>
15
+ }
16
+
17
+ export class IPCMessageHandler extends TinyEmitter {
18
+ #ipcMessageManager: IPCMessageManager | null = null;
19
+ #options: IPCMessageHandlerOptions;
20
+ #worker: Worker | null = null;
21
+ #events: JSONObject = { };
22
+
23
+ constructor(options: IPCMessageHandlerOptions) {
24
+ super();
25
+ this.#options = options;
26
+ if (cluster.isPrimary) {
27
+ this.SetupPrimary();
28
+ } else {
29
+ this.SetupWorker();
30
+ }
31
+ }
32
+
33
+ get __events() {
34
+ return this.#events;
35
+ }
36
+
37
+ SetupPrimary = () => {
38
+ const ipcMessageManagerOptions: IPCMessageManagerOptions = {
39
+ logger: defaultLogger,
40
+ requestResponseMessageTimeout: 2000,
41
+ namespace: this.#options.namespace,
42
+ role: 'SERVER',
43
+ messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => {
44
+ (options.worker as any).send(payload);
45
+ },
46
+ ProcessRequestMessage: async (payload: IIPCMessageProcessorIPCPayload, options: any): Promise<JSONObject> => {
47
+ return this.#processPayload(payload, options);
48
+ },
49
+ messageReceiverStart: (options: any) => {
50
+ // Receive a message to process from a worker
51
+ const worker = (options.worker as Worker);
52
+ worker.on('message', (payload) => this.#ipcMessageManager?.ProcessMessage(payload, { worker }));
53
+ },
54
+ messageReceiverStop: (options: any) => {
55
+ const worker = (options.worker as Worker);
56
+ worker.off('message', (payload) => this.#ipcMessageManager?.ProcessMessage(payload, { worker }));
57
+ }
58
+ }
59
+ this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
60
+ }
61
+
62
+ SetupWorker = () => {
63
+ const ipcMessageManagerOptions: IPCMessageManagerOptions = {
64
+ logger: defaultLogger,
65
+ requestResponseMessageTimeout: this.#options.requestResponseMessageTimeout,
66
+ namespace: this.#options.namespace,
67
+ role: 'CLIENT',
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
69
+ messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => {
70
+ // Options not required for sending payloads to the master process
71
+ (process as any).send(payload);
72
+ },
73
+ ProcessRequestMessage: async (payload: IIPCMessageProcessorIPCPayload, options: any): Promise<JSONObject> => {
74
+ return this.#processPayload(payload, options);
75
+ },
76
+ messageReceiverStart: (options: any) => {
77
+ // Receive a message response back from the primary thread
78
+ process.on('message', (payload) => this.#ipcMessageManager?.ProcessMessage(payload, options));
79
+ },
80
+ messageReceiverStop: (options: any) => {
81
+ process.off('message', (payload) => this.#ipcMessageManager?.ProcessMessage(payload, options));
82
+ }
83
+ }
84
+ this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
85
+ }
86
+
87
+ SendMessage = async (payload: JSONObject): Promise<JSONObject> => {
88
+ if (this.#ipcMessageManager) {
89
+ if (this.#worker) {
90
+ return this.#ipcMessageManager?.SendMessage(payload, { worker: this.#worker });
91
+ } else {
92
+ return this.#ipcMessageManager?.SendMessage(payload, { });
93
+ }
94
+ } else {
95
+ // Error state - no #ipcMessageManager set
96
+ return { };
97
+ }
98
+ }
99
+
100
+ #processPayload = (payload: IIPCMessageProcessorIPCPayload, options: any): Promise<JSONObject> => {
101
+ // check the event name from the collection and invoke that function
102
+ return new Promise<JSONObject>((resolve, reject) => {
103
+ if (payload.messageType.localeCompare('REQUEST') === 0) {
104
+ if (payload.requestPayload['__eventName']) {
105
+ const eventName = payload.requestPayload['__eventName'];
106
+ if (this.#events[eventName]) {
107
+ try {
108
+ //const retVal = this.#events[eventName].callback(payload.requestPayload.args, payload, options, this.#events[eventName].ctx);
109
+ this.#events[eventName].callback(...payload.requestPayload.args, (responseMessage: any) => {
110
+ resolve(responseMessage);
111
+ });
112
+ } catch (error) {
113
+ reject(error);
114
+ }
115
+ }
116
+ }
117
+ }
118
+ });
119
+ }
120
+
121
+ // p.on('fromworker', (arg1: number, arg2: string, callback: any) => {
122
+ override on(event: string, callback: any, ctx?: any): this {
123
+ if (this.#events[event]) {
124
+ // Update the event with the same name
125
+ delete this.#events[event];
126
+ }
127
+ const eventObject = {
128
+ event,
129
+ callback,
130
+ ctx
131
+ }
132
+ this.#events[eventObject.event] = eventObject;
133
+ return this;
134
+ //return super.on(event, callback, ctx);
135
+ }
136
+
137
+ override off(event: string, callback?: any): this {
138
+ if (this.#events[event]) {
139
+ delete this.#events[event];
140
+ }
141
+ return this;
142
+ //return super.off(event, callback);
143
+ }
144
+
145
+ Start = (worker?: Worker) => {
146
+ if (worker) {
147
+ this.#ipcMessageManager?.Start({ worker });
148
+ this.#worker = worker;
149
+ } else {
150
+ this.#ipcMessageManager?.Start({ });
151
+ }
152
+ }
153
+
154
+ Stop = () => {
155
+ if (this.#worker) {
156
+ this.#ipcMessageManager?.Stop({ worker: this.#worker });
157
+ this.#worker = null;
158
+ } else {
159
+ this.#ipcMessageManager?.Stop({ });
160
+ }
161
+ }
162
+
163
+ get worker(): Worker | null {
164
+ return this.#worker;
165
+ }
166
+
167
+ override emit(event: string, ...args: any[]): this {
168
+
169
+ const sendMessage = async () => {
170
+ const retVal = await this.SendMessage({
171
+ __eventName: event,
172
+ args: args.slice(0, args.length-1)
173
+ });
174
+ // Invoke the response callback
175
+ args[args.length-1](retVal);
176
+ };
177
+ sendMessage();
178
+ return this;
179
+ //return super.emit(event, ...args);
180
+ }
181
+ }
@@ -11,6 +11,7 @@ export interface IPCMessageManagerOptions {
11
11
  logger: ISTSLogger
12
12
  requestResponseMessageTimeout: number
13
13
  namespace: string
14
+ role: 'SERVER' | 'CLIENT'
14
15
  messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => void
15
16
  ProcessRequestMessage: (payload: IIPCMessageProcessorIPCPayload, options: any) => Promise<JSONObject>
16
17
  ProcessResponseMessage?: (reesponses: Record<string, IIPCMessageProcessorIPCPayload>, options: any) => Promise<boolean>
@@ -48,7 +49,7 @@ export class IPCMessageManager
48
49
  // Override in subclass if required
49
50
  }
50
51
 
51
- SendMessage = (payload: JSONObject, options: any): Promise<JSONObject> => {
52
+ SendMessage = (payload: JSONObject, options?: any): Promise<JSONObject> => {
52
53
  return new Promise((resolve, reject) => {
53
54
  this.#SendMessage(payload, options,
54
55
  (payload: IIPCMessageProcessorIPCPayload) => {
@@ -69,6 +70,7 @@ export class IPCMessageManager
69
70
  header: this.#messageHeader,
70
71
  messageId,
71
72
  senderId: this.#id,
73
+ senderRole: this.#options.role,
72
74
  requestPayload: payload,
73
75
  responsePayload: { },
74
76
  pid: process.pid.toString(),
@@ -77,6 +79,7 @@ export class IPCMessageManager
77
79
  const messageRecord = {
78
80
  messageId,
79
81
  senderId: this.#id,
82
+ senderRole: this.#options.role,
80
83
  requestPayload,
81
84
  responses: { }, // record
82
85
  startTime: performance.now(),
@@ -105,26 +108,33 @@ export class IPCMessageManager
105
108
  let completed = true; // Defaults to true
106
109
  if (this.#options.ProcessResponseMessage) {
107
110
  completed = await this.#options.ProcessResponseMessage(inFlightMessageRecord.responses, options);
108
- }
109
- if (completed) {
111
+ if (completed) {
112
+ inFlightMessageRecord.endTime = performance.now();
113
+ clearTimeout(inFlightMessageRecord.timeout as NodeJS.Timer);
114
+ inFlightMessageRecord.callBack({
115
+ responsePayload: Object.values(inFlightMessageRecord.responses).map(r => r.responsePayload)
116
+ } as any, options) //
117
+ delete this.#inflightMessages[message.messageId];
118
+ }
119
+ } else if (completed) {
110
120
  inFlightMessageRecord.endTime = performance.now();
111
121
  clearTimeout(inFlightMessageRecord.timeout as NodeJS.Timer);
112
- //this.#LogDebugMessage(chalk.green(`received: [${JSON.stringify(message)}]`));
113
- inFlightMessageRecord.callBack(message, options)
122
+ inFlightMessageRecord.callBack(message, options) // inFlightMessageRecord.responses
123
+ //@@inFlightMessageRecord.callBack(Object.values(inFlightMessageRecord.responses), options) //
114
124
  delete this.#inflightMessages[message.messageId];
115
125
  }
116
126
  } else {
117
- throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`);
127
+ //throw new Error(`Could not find Request/Response message with id: [${message.messageId}]`); //@@
118
128
  }
119
129
  }
120
130
  }
121
131
 
122
- Start = (options: any) => {
132
+ Start = (options?: any) => {
123
133
  this.#messageHeader = `__STS__${this.#options.namespace}__${uuidv4()}`;
124
134
  this.#options.messageReceiverStart(options);
125
135
  }
126
136
 
127
- Stop = (options: any) => {
137
+ Stop = (options?: any) => {
128
138
  // Kill in-flight messages
129
139
  this.#options.messageReceiverStop(options);
130
140
 
@@ -139,7 +149,7 @@ export class IPCMessageManager
139
149
  // Process a message recieved from a worker
140
150
  ProcessMessage = async (msg: any, options: any) => {
141
151
  if (msg.header) {
142
- const checkName = `__STS__${this.#options.namespace}__`;
152
+ const checkName = `__STS__${this.#options.namespace}__`; //@@ this is a broadcast becuase the unique uuid is not part of the header test
143
153
  if ((msg.header as string).includes(checkName)) {
144
154
  const message = (msg as IIPCMessageProcessorIPCPayload);
145
155
  if (msg.messageType.localeCompare('REQUEST') === 0) {
@@ -23,6 +23,7 @@ export class IPCMessageProcessorPrimary
23
23
  logger: defaultLogger,
24
24
  requestResponseMessageTimeout: 2000,
25
25
  namespace: classOptions.namespace,
26
+ role: 'SERVER',
26
27
  messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => {
27
28
  (options.worker as any).send(payload);
28
29
  },
@@ -20,6 +20,7 @@ export class IPCMessageProcessorWorker {
20
20
  logger: defaultLogger,
21
21
  requestResponseMessageTimeout: classOptions.requestResponseMessageTimeout,
22
22
  namespace: classOptions.namespace,
23
+ role: 'CLIENT',
23
24
  // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
24
25
  messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => {
25
26
  // Options not required for sending payloads to the master process
@@ -9,8 +9,7 @@ import { v4 as uuidv4 } from 'uuid';
9
9
 
10
10
  import chalk from 'chalk';
11
11
 
12
- import { $Options } from '@nsshunt/stsconfig'
13
- const goptions = $Options()
12
+ import { goptions } from '@nsshunt/stsconfig'
14
13
 
15
14
  export interface IMKafkaManagerOptions {
16
15
  logger: ISTSLogger
@@ -16,8 +16,7 @@ import { createServer as createServerHttps } from 'https'
16
16
  import { createServer } from 'http'
17
17
  import { AggregatorRegistry } from 'prom-client'
18
18
 
19
- import { $Options } from '@nsshunt/stsconfig'
20
- const goptions = $Options()
19
+ import { goptions } from '@nsshunt/stsconfig'
21
20
 
22
21
  import { Gauge, GaugeTypes, InstrumentGaugeTelemetry, InstrumentGaugeOptions, InstrumentHistogramTelemetry } from '@nsshunt/stsobservability'
23
22
 
@@ -12,8 +12,7 @@ import { Gauge, GaugeTypes, InstrumentObjectOptions, InstrumentLogOptions, Instr
12
12
 
13
13
  import { IDBAccessLayer, accessLayerType, DBAccessLayerManager, IDBAccessLayerEvents } from '@nsshunt/stsdatamanagement'
14
14
 
15
- import { $Options } from '@nsshunt/stsconfig'
16
- const goptions = $Options()
15
+ import { goptions } from '@nsshunt/stsconfig'
17
16
 
18
17
  import { ProcessOptions, STSServerType } from './processoptions'
19
18
  import { STSOptionsBase, JSONObject } from '@nsshunt/stsutils'
@@ -0,0 +1,155 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0 */ // --> OFF
2
+ import { beforeAll, afterAll, test, describe, expect } from 'vitest';
3
+
4
+ import { RedisMessageHandler } from './redisMessageHandler'
5
+
6
+ import { JSONObject, Sleep, defaultLogger } from '@nsshunt/stsutils';
7
+
8
+ import chalk from 'chalk';
9
+
10
+ import { v4 as uuidv4 } from 'uuid';
11
+
12
+ import { GenericContainer } from "testcontainers";
13
+
14
+ describe("Redis Message Handler Test", () =>
15
+ {
16
+ let ioRedisContainer: any;
17
+ let ioRedisMessageProcessorUrl = '';
18
+
19
+ beforeAll(async () => {
20
+ // --- [ioRedis ] -------------------------------------------------------------------------
21
+
22
+ ioRedisContainer = await new GenericContainer("redis")
23
+ .withExposedPorts(6379)
24
+ .start();
25
+ ioRedisMessageProcessorUrl = `redis://${ioRedisContainer.getHost()}:${ioRedisContainer.getMappedPort(6379)}`;
26
+ });
27
+
28
+ afterAll(async () => {
29
+ if (ioRedisContainer) {
30
+ await ioRedisContainer.stop();
31
+ }
32
+ }, 5000);
33
+
34
+ class Server {
35
+ #r1: RedisMessageHandler;
36
+
37
+ constructor() {
38
+ this.#r1 = new RedisMessageHandler({
39
+ logger: defaultLogger,
40
+ role: 'SERVER',
41
+ redisUrl: ioRedisMessageProcessorUrl, // goptions.imRedisMessageProcessorUrl,
42
+ namespace: 'redistestingstsframework'
43
+ });
44
+ this.#r1.Start();
45
+
46
+ this.#r1.on('fromworkerredis', (arg1: string, arg2: number, arg3: string, callback: any) => {
47
+ console.log(chalk.magenta(`${process.pid}: fromworkerredis.ON: [${arg1} ${arg2} ${arg3}]`));
48
+ //callback(null);
49
+ callback({status: `response message from event = fromworkerredis with args ${arg1} ${arg2} ${arg3}`})
50
+ });
51
+ }
52
+
53
+ Start = async (expectedResponses: number, iterations: number, delay: number) => {
54
+ for (let i=0; i < iterations; i++) {
55
+ /*
56
+ Object.keys(p).forEach(async (pKey) => {
57
+ const emitobj = { i: i, a: 'a', b: 'b', worker: pKey };
58
+ console.log(chalk.green(`${process.pid}: emit event to worker: [${pKey}] fromprimary: [${JSON.stringify(emitobj)}`));
59
+ p[pKey].emit('fromprimary', emitobj, (response: any) => {
60
+ console.log(chalk.green(`${process.pid}: ${JSON.stringify(response)}`));
61
+ });
62
+ });
63
+ */
64
+
65
+
66
+ const emitobj = { i: i, a: 'a', b: 'b' };
67
+ console.log(chalk.cyan(`${process.pid}: emit event fromprimaryredis fromprimary: [${JSON.stringify(emitobj)}`));
68
+ this.#r1.emit('fromprimaryredis', emitobj, (response: any) => {
69
+ console.log(chalk.cyan(`${process.pid}: Response(fromprimaryredis): Count: [${response.length}] [${JSON.stringify(response)}]`));
70
+ expect(response.length).toEqual(expectedResponses);
71
+ });
72
+
73
+ await Sleep(delay);
74
+ }
75
+ }
76
+
77
+ Stop = () => {
78
+ this.#r1.Stop();
79
+ }
80
+ }
81
+
82
+ class Client {
83
+ #r1: RedisMessageHandler;
84
+
85
+ constructor() {
86
+ this.#r1 = new RedisMessageHandler({
87
+ logger: defaultLogger,
88
+ role: 'CLIENT',
89
+ redisUrl: ioRedisMessageProcessorUrl, // goptions.imRedisMessageProcessorUrl,
90
+ namespace: 'redistestingstsframework'
91
+ });
92
+ this.#r1.Start();
93
+
94
+ this.#r1.on('fromprimaryredis', (arg1: JSONObject, callback: any) => {
95
+ //callback();
96
+ console.log(chalk.yellow(`${process.pid}: fromprimaryredis.ON: [${JSON.stringify(arg1)}]`));
97
+ callback({status: `PID: [${process.pid}]: response message from event = fromprimaryredis with args ${JSON.stringify(arg1)}`})
98
+ });
99
+ }
100
+
101
+ Start = async (iterations: number, delay: number) => {
102
+ for (let i=0; i < iterations; i++) {
103
+ const id = uuidv4();
104
+ /*
105
+ console.log(chalk.yellow(`${process.pid}: emit event fromworker: [${id} ${i} Hello]`));
106
+ w1.emit('fromworker', id, i, 'Hello', (response: any) => {
107
+ console.log(chalk.yellow(`${process.pid}: ${JSON.stringify(response)}`));
108
+ });
109
+ */
110
+
111
+ console.log(chalk.green(`${process.pid}: emit event fromworkerredis: [${id} ${i} Hello]`));
112
+ this.#r1.emit('fromworkerredis', id, i, 'Hello', (response: any) => {
113
+ console.log(chalk.green(`${process.pid}: Response(fromworkerredis): [${JSON.stringify(response)}]`));
114
+ });
115
+ await Sleep(delay);
116
+ }
117
+ }
118
+
119
+ Stop = () => {
120
+ this.#r1.Stop();
121
+ }
122
+ }
123
+
124
+
125
+ test('Test 1', async () =>
126
+ {
127
+ const clientCount = 20;
128
+ const iterations = 5;
129
+ const delay = 100;
130
+
131
+ expect.assertions(iterations);
132
+
133
+ // Setup new server and clients
134
+ const server = new Server();
135
+ const clients: Client[] = [ ];
136
+ for (let i=0; i < clientCount; i++) {
137
+ clients.push(new Client());
138
+ }
139
+
140
+ // Need this delay to ensure the pings are all sent and received between the clients and the server
141
+ await Sleep(2000);
142
+
143
+ // Start sending messages
144
+ server.Start(clientCount, iterations, delay);
145
+ clients.forEach(c => c.Start(iterations, delay));
146
+
147
+ // Allow time to process
148
+ await Sleep(3000);
149
+
150
+ // All done, stop.
151
+ clients.forEach(c => c.Stop());
152
+ server.Stop();
153
+ }, 30000);
154
+ });
155
+