@nsshunt/stsappframework 3.1.118 → 3.1.121

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 (36) hide show
  1. package/dist/ipcMessageHandler.js +171 -0
  2. package/dist/ipcMessageHandler.js.map +1 -0
  3. package/dist/ipcMessageManager.js +15 -5
  4. package/dist/ipcMessageManager.js.map +1 -1
  5. package/dist/ipcMessageProcessorPrimary.js +1 -0
  6. package/dist/ipcMessageProcessorPrimary.js.map +1 -1
  7. package/dist/ipcMessageProcessorWorker.js +1 -0
  8. package/dist/ipcMessageProcessorWorker.js.map +1 -1
  9. package/dist/redisMessageHandler.js +212 -0
  10. package/dist/redisMessageHandler.js.map +1 -0
  11. package/dist/redisMessageHandler.test.js +127 -0
  12. package/dist/redisMessageHandler.test.js.map +1 -0
  13. package/dist/testing/app.js +112 -5
  14. package/dist/testing/app.js.map +1 -1
  15. package/package.json +9 -9
  16. package/runtest2.sh +1 -1
  17. package/src/commonTypes.ts +1 -0
  18. package/src/ipcMessageHandler.ts +181 -0
  19. package/src/ipcMessageManager.ts +19 -9
  20. package/src/ipcMessageProcessorPrimary.ts +1 -0
  21. package/src/ipcMessageProcessorWorker.ts +1 -0
  22. package/src/redisMessageHandler.test.ts +155 -0
  23. package/src/redisMessageHandler.ts +256 -0
  24. package/src/testing/app.ts +132 -8
  25. package/types/commonTypes.d.ts +1 -0
  26. package/types/commonTypes.d.ts.map +1 -1
  27. package/types/ipcMessageHandler.d.ts +24 -0
  28. package/types/ipcMessageHandler.d.ts.map +1 -0
  29. package/types/ipcMessageManager.d.ts +4 -3
  30. package/types/ipcMessageManager.d.ts.map +1 -1
  31. package/types/ipcMessageProcessorPrimary.d.ts.map +1 -1
  32. package/types/ipcMessageProcessorWorker.d.ts.map +1 -1
  33. package/types/redisMessageHandler.d.ts +35 -0
  34. package/types/redisMessageHandler.d.ts.map +1 -0
  35. package/types/redisMessageHandler.test.d.ts +2 -0
  36. package/types/redisMessageHandler.test.d.ts.map +1 -0
@@ -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
+
@@ -0,0 +1,256 @@
1
+ /* eslint @typescript-eslint/no-explicit-any: 0, @typescript-eslint/no-unused-vars: 0 */ // --> OFF */ // --> OFF
2
+ import { TinyEmitter } from "tiny-emitter";
3
+ import { ISTSLogger, JSONObject } from '@nsshunt/stsutils'
4
+
5
+ import { IIPCMessageProcessorIPCPayload } from './commonTypes'
6
+
7
+ import { IPCMessageManager, IPCMessageManagerOptions } from './ipcMessageManager'
8
+ import { Redis, RedisOptions } from "ioredis";
9
+
10
+ import chalk from 'chalk';
11
+
12
+ const REQUEST_CHANNEL = '__STS__SVC_stsappframework_request'
13
+ const RESPONSE_CHANNEL = '__STS__SVC_stsappframework_response'
14
+
15
+ export interface IRedisAdminManagerOptions {
16
+ redisUrl: string
17
+ logger: ISTSLogger
18
+ role: 'SERVER' | 'CLIENT'
19
+ namespace: string
20
+ }
21
+
22
+ export interface IClientRecord {
23
+ id: string
24
+ clientConnected: Date
25
+ pingCount: number
26
+ timeout: NodeJS.Timeout
27
+ }
28
+
29
+ export interface IEventPayload {
30
+ __eventName: string
31
+ args: any[]
32
+ }
33
+
34
+ export interface IEventRecord {
35
+ event: string
36
+ callback: any,
37
+ ctx?: any
38
+ }
39
+
40
+ export class RedisMessageHandler extends TinyEmitter {
41
+ #ipcMessageManager: IPCMessageManager | null = null;
42
+ #options: IRedisAdminManagerOptions;
43
+ #events: Record<string, IEventRecord> = { };
44
+ #requestChannel: string;
45
+ #responseChannel: string;
46
+ #redisSubscriber: Redis;
47
+ #redisPublisher: Redis;
48
+ #clients: Record<string, IClientRecord> = { };
49
+ #pingTimeout: NodeJS.Timeout | null = null;
50
+
51
+ constructor(options: IRedisAdminManagerOptions) {
52
+ super();
53
+ this.#options = options;
54
+
55
+ this.#requestChannel = REQUEST_CHANNEL
56
+ this.#responseChannel = RESPONSE_CHANNEL
57
+
58
+ const redisOptions: RedisOptions = {
59
+ showFriendlyErrorStack: true,
60
+ maxRetriesPerRequest: 20
61
+ }
62
+
63
+ this.#redisSubscriber = new Redis(this.#options.redisUrl, redisOptions);
64
+ this.#redisPublisher = new Redis(this.#options.redisUrl, redisOptions);
65
+
66
+ this.#redisSubscriber.subscribe(this.#requestChannel, this.#responseChannel, (error, count) => {
67
+ if (error) {
68
+ // Just like other commands, subscribe() can fail for some reasons, // ex network issues.
69
+ this.#LogError(chalk.red(`RedisAdminManager:constructor(): PID: [${process.pid}] Role: [${this.#options.role}] Error - Failed to subscribe: [${error}]`));
70
+ } else {
71
+ // `count` represents the number of channels this client is currently subscribed to.
72
+ this.#LogInfo(chalk.white(`RedisAdminManager:constructor(): PID: [${process.pid}] Role: [${this.#options.role}] Subscribed successfully! This client is currently subscribed to ${count} channels.`));
73
+ }
74
+ });
75
+
76
+ this.SetupPrimary();
77
+
78
+ if (this.#options.role.localeCompare('CLIENT') === 0) {
79
+ const ping = () => {
80
+ this.#pingTimeout = setTimeout(() => {
81
+ this.emit('ping', this.#ipcMessageManager?.id, (response: any) => { });
82
+ ping();
83
+ }, 1000).unref();
84
+ }
85
+ ping();
86
+ } else {
87
+ this.on('ping', (id: string, callback: any) => {
88
+ if (this.#clients[id]) {
89
+ clearTimeout(this.#clients[id].timeout);
90
+ this.#clients[id].pingCount++;
91
+ this.#clients[id].timeout = setTimeout(() => {
92
+ delete this.#clients[id];
93
+ }, 2000);
94
+ } else {
95
+ this.#clients[id] = {
96
+ id,
97
+ clientConnected: new Date(),
98
+ pingCount: 0,
99
+ timeout: setTimeout(() => {
100
+ delete this.#clients[id];
101
+ }, 2000)
102
+ }
103
+ }
104
+ callback('ok');
105
+ });
106
+ }
107
+ }
108
+
109
+ #LogInfo(message: any) {
110
+ this.#options.logger.info(message);
111
+ }
112
+
113
+ #LogError(message: any) {
114
+ this.#options.logger.error(message);
115
+ }
116
+
117
+ #processRawMessage = (channel: string, rawmessage: string) => {
118
+ const message = JSON.parse(rawmessage);
119
+ this.#ipcMessageManager?.ProcessMessage(message, { channel });
120
+ }
121
+
122
+ SetupPrimary = () => {
123
+ const ipcMessageManagerOptions: IPCMessageManagerOptions = {
124
+ logger: this.#options.logger,
125
+ requestResponseMessageTimeout: 2000,
126
+ namespace: this.#options.namespace,
127
+ role: this.#options.role,
128
+ messageSender: this.#messageSender,
129
+ // This method is used to calculate if all responses have been received from multiple clients (broadcast)
130
+ // returns true/false.
131
+ ProcessResponseMessage: this.#ProcessResponseMessage,
132
+ // This gets called when an event is received from a message receiver (when ProcessMessage is invoked from the receiver event handler)
133
+ ProcessRequestMessage: this.#processPayload,
134
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
135
+ messageReceiverStart: (options: any) => {
136
+ this.#redisSubscriber.on("message", this.#processRawMessage);
137
+ },
138
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
139
+ messageReceiverStop: (options: any) => {
140
+ this.#redisSubscriber.off("message", this.#processRawMessage);
141
+ }
142
+ }
143
+ this.#ipcMessageManager = new IPCMessageManager(ipcMessageManagerOptions);
144
+ }
145
+
146
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
147
+ #messageSender = (payload: IIPCMessageProcessorIPCPayload, options: any) => {
148
+ if (payload.messageType.localeCompare('REQUEST') === 0) {
149
+ this.#redisPublisher.publish(this.#requestChannel, JSON.stringify(payload));
150
+ } else if (payload.messageType.localeCompare('RESPONSE') === 0) {
151
+ this.#redisPublisher.publish(this.#responseChannel, JSON.stringify(payload));
152
+ }
153
+ }
154
+
155
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars
156
+ #ProcessResponseMessage = async (responses: Record<string, IIPCMessageProcessorIPCPayload>, options: any): Promise<boolean> => {
157
+ // Now check if we have all responses ...
158
+ let allFound = false;
159
+
160
+ Object.keys(responses).forEach(r => {
161
+ if (responses[r].senderRole.localeCompare('CLIENT') === 0) {
162
+ allFound = true;
163
+ }
164
+ });
165
+ if (allFound) {
166
+ return allFound;
167
+ }
168
+
169
+ let found = true;
170
+ Object.values(this.#clients).map(c => {
171
+ if (!responses[c.id]) {
172
+ found = false;
173
+ }
174
+ });
175
+
176
+ if (found) {
177
+ return true;
178
+ }
179
+ return false;
180
+ }
181
+
182
+ #processPayload = (payload: IIPCMessageProcessorIPCPayload, options: any): Promise<JSONObject> => {
183
+ // check the event name from the collection and invoke that function
184
+ return new Promise<JSONObject>((resolve, reject) => {
185
+ if (payload.messageType.localeCompare('REQUEST') === 0) {
186
+ if (payload.requestPayload['__eventName']) {
187
+ const eventName = payload.requestPayload['__eventName'];
188
+ // Only process events that I have registered interest in (using .on)
189
+ if (this.#events[eventName]) {
190
+ try {
191
+ //const retVal = this.#events[eventName].callback(payload.requestPayload.args, payload, options, this.#events[eventName].ctx);
192
+ this.#events[eventName].callback(...payload.requestPayload.args, (responseMessage: any) => {
193
+ resolve(responseMessage);
194
+ });
195
+ } catch (error) {
196
+ reject(error);
197
+ }
198
+ }
199
+ }
200
+ }
201
+ });
202
+ }
203
+
204
+ // p.on('fromworker', (arg1: number, arg2: string, callback: any) => {
205
+ override on(event: string, callback: any, ctx?: any): this {
206
+ if (this.#events[event]) {
207
+ // Update the event with the same name
208
+ delete this.#events[event];
209
+ }
210
+ const eventObject: IEventRecord = {
211
+ event,
212
+ callback,
213
+ ctx
214
+ }
215
+ this.#events[eventObject.event] = eventObject;
216
+ return this;
217
+ }
218
+
219
+ override off(event: string, callback?: any): this {
220
+ if (this.#events[event]) {
221
+ delete this.#events[event];
222
+ }
223
+ return this;
224
+ }
225
+
226
+ Start = () => {
227
+ this.#ipcMessageManager?.Start();
228
+ }
229
+
230
+ Stop = () => {
231
+ if (this.#pingTimeout) {
232
+ clearTimeout(this.#pingTimeout);
233
+ this.#pingTimeout = null;
234
+ }
235
+
236
+ this.#ipcMessageManager?.Stop();
237
+
238
+ this.#redisSubscriber.quit();
239
+ this.#redisSubscriber.disconnect();
240
+
241
+ this.#redisPublisher.quit();
242
+ this.#redisPublisher.disconnect();
243
+ }
244
+
245
+ override emit(event: string, ...args: any[]): this {
246
+ (async () => {
247
+ const retVal = await this.#ipcMessageManager?.SendMessage({
248
+ __eventName: event,
249
+ args: args.slice(0, args.length-1)
250
+ } as IEventPayload);
251
+ // Invoke the response callback
252
+ args[args.length-1](retVal);
253
+ })();
254
+ return this;
255
+ }
256
+ }
@@ -10,10 +10,15 @@ import { JSONObject, Sleep, defaultLogger } from '@nsshunt/stsutils';
10
10
 
11
11
  import { IPCMessageProcessorPrimary } from './../ipcMessageProcessorPrimary'
12
12
 
13
- import { IIPCMessageProcessorIPCPayload } from './../commonTypes'
13
+ import { IIPCMessageProcessorIPCPayload, IProcessBase } from './../commonTypes'
14
14
 
15
15
  import chalk from 'chalk';
16
- import { messageStatus } from '@nsshunt/stsobservability';
16
+
17
+ import { IPCMessageHandler } from './../ipcMessageHandler'
18
+
19
+ import { v4 as uuidv4 } from 'uuid';
20
+ import { RedisMessageHandler } from './../redisMessageHandler'
21
+ import { goptions } from '@nsshunt/stsconfig'
17
22
 
18
23
  const sleepVal = 0;
19
24
  const maxLoop = 100;
@@ -40,9 +45,7 @@ const zzz = async () => {
40
45
  }
41
46
  }
42
47
 
43
- if (cluster.isPrimary) {
44
- new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
45
-
48
+ const StartTestPrimary = () => {
46
49
  setTimeout(async () => {
47
50
  for (const id in cluster.workers) {
48
51
  const p1 = new IPCMessageProcessorPrimary({
@@ -96,10 +99,9 @@ if (cluster.isPrimary) {
96
99
  zzz();
97
100
 
98
101
  }, 1000);
102
+ }
99
103
 
100
- } else {
101
- new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
102
-
104
+ const StartTestWorker = () => {
103
105
  const w1 = new IPCMessageProcessorWorker({
104
106
  logger: defaultLogger,
105
107
  namespace: 'test1',
@@ -174,3 +176,125 @@ if (cluster.isPrimary) {
174
176
  }
175
177
  }, 1000);
176
178
  }
179
+
180
+ const iterations = 100;
181
+ const delay = 100;
182
+
183
+ if (cluster.isPrimary) {
184
+ new MasterProcessBase(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
185
+ //StartTestPrimary();
186
+
187
+ setTimeout(() => {
188
+ const p: Record<string, IPCMessageHandler> = { };
189
+ /*
190
+ for (const id in cluster.workers) {
191
+ const worker = cluster.workers[id] as Worker;
192
+
193
+ const p1: IPCMessageHandler = new IPCMessageHandler({
194
+ logger: defaultLogger,
195
+ requestResponseMessageTimeout: 5000,
196
+ namespace: 'aabbcc'
197
+ });
198
+ p1.Start(worker);
199
+
200
+ p1.on('fromworker', (arg1: string, arg2: number, arg3: string, callback: any) => {
201
+ //callback(null);
202
+ callback({status: `response message from event = fromworker with args ${arg1} ${arg2} ${arg3}`})
203
+ });
204
+
205
+ p[worker.id] = p1;
206
+ }
207
+ */
208
+
209
+
210
+ const r1: RedisMessageHandler = new RedisMessageHandler({
211
+ logger: defaultLogger,
212
+ role: 'SERVER',
213
+ redisUrl: goptions.imRedisMessageProcessorUrl,
214
+ namespace: 'mytestapp'
215
+ });
216
+ r1.Start();
217
+
218
+ r1.on('fromworkerredis', (arg1: string, arg2: number, arg3: string, callback: any) => {
219
+ console.log(chalk.magenta(`${process.pid}: fromworkerredis.ON: [${arg1} ${arg2} ${arg3}]`));
220
+ //callback(null);
221
+ callback({status: `response message from event = fromworkerredis with args ${arg1} ${arg2} ${arg3}`})
222
+ });
223
+
224
+
225
+ setTimeout(async () => {
226
+ for (let i=0; i < iterations; i++) {
227
+ /*
228
+ Object.keys(p).forEach(async (pKey) => {
229
+ const emitobj = { i: i, a: 'a', b: 'b', worker: pKey };
230
+ console.log(chalk.green(`${process.pid}: emit event to worker: [${pKey}] fromprimary: [${JSON.stringify(emitobj)}`));
231
+ p[pKey].emit('fromprimary', emitobj, (response: any) => {
232
+ console.log(chalk.green(`${process.pid}: ${JSON.stringify(response)}`));
233
+ });
234
+ });
235
+ */
236
+
237
+
238
+ const emitobj = { i: i, a: 'a', b: 'b' };
239
+ console.log(chalk.cyan(`${process.pid}: emit event fromprimaryredis fromprimary: [${JSON.stringify(emitobj)}`));
240
+ r1.emit('fromprimaryredis', emitobj, (response: any) => {
241
+ console.log(chalk.cyan(`${process.pid}: Response(fromprimaryredis): [${JSON.stringify(response)}]`));
242
+ });
243
+
244
+ await Sleep(delay);
245
+ }
246
+
247
+ }, 1000);
248
+ }, 1000);
249
+ } else {
250
+ new WorkerProcess(ServiceConfigOptions(true, cluster.isPrimary)).SetupServer();
251
+ //StartTestWorker();
252
+
253
+ setTimeout(async () => {
254
+ /*
255
+ const w1: IPCMessageHandler = new IPCMessageHandler({
256
+ logger: defaultLogger,
257
+ requestResponseMessageTimeout: 5000,
258
+ namespace: 'aabbcc'
259
+ });
260
+ w1.Start();
261
+
262
+ w1.on('fromprimary', (arg1: JSONObject, callback: any) => {
263
+ //callback();
264
+ callback({status: `response message from event = fromprimary with args ${JSON.stringify(arg1)}`})
265
+ });
266
+ */
267
+
268
+ const r1: RedisMessageHandler = new RedisMessageHandler({
269
+ logger: defaultLogger,
270
+ role: 'CLIENT',
271
+ redisUrl: goptions.imRedisMessageProcessorUrl,
272
+ namespace: 'mytestapp'
273
+ });
274
+ r1.Start();
275
+
276
+ r1.on('fromprimaryredis', (arg1: JSONObject, callback: any) => {
277
+ //callback();
278
+ console.log(chalk.yellow(`${process.pid}: fromprimaryredis.ON: [${JSON.stringify(arg1)}]`));
279
+ callback({status: `PID: [${process.pid}]: response message from event = fromprimaryredis with args ${JSON.stringify(arg1)}`})
280
+ });
281
+
282
+ setTimeout(async () => {
283
+ for (let i=0; i < iterations; i++) {
284
+ const id = uuidv4();
285
+ /*
286
+ console.log(chalk.yellow(`${process.pid}: emit event fromworker: [${id} ${i} Hello]`));
287
+ w1.emit('fromworker', id, i, 'Hello', (response: any) => {
288
+ console.log(chalk.yellow(`${process.pid}: ${JSON.stringify(response)}`));
289
+ });
290
+ */
291
+
292
+ console.log(chalk.green(`${process.pid}: emit event fromworkerredis: [${id} ${i} Hello]`));
293
+ r1.emit('fromworkerredis', id, i, 'Hello', (response: any) => {
294
+ console.log(chalk.green(`${process.pid}: Response(fromworkerredis): [${JSON.stringify(response)}]`));
295
+ });
296
+ await Sleep(delay);
297
+ }
298
+ }, 1000);
299
+ }, 1000);
300
+ }
@@ -172,6 +172,7 @@ export interface IIPCMessageProcessorIPCPayload {
172
172
  header: string;
173
173
  messageId: string;
174
174
  senderId: string;
175
+ senderRole: string;
175
176
  requestPayload: JSONObject;
176
177
  responsePayload: JSONObject;
177
178
  pid: 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,24 @@
1
+ /// <reference types="node" />
2
+ import { TinyEmitter } from "tiny-emitter";
3
+ import { Worker } from 'node:cluster';
4
+ import { ISTSLogger, JSONObject } from '@nsshunt/stsutils';
5
+ export interface IPCMessageHandlerOptions {
6
+ logger: ISTSLogger;
7
+ requestResponseMessageTimeout: number;
8
+ namespace: string;
9
+ }
10
+ export declare class IPCMessageHandler extends TinyEmitter {
11
+ #private;
12
+ constructor(options: IPCMessageHandlerOptions);
13
+ get __events(): JSONObject;
14
+ SetupPrimary: () => void;
15
+ SetupWorker: () => void;
16
+ SendMessage: (payload: JSONObject) => Promise<JSONObject>;
17
+ on(event: string, callback: any, ctx?: any): this;
18
+ off(event: string, callback?: any): this;
19
+ Start: (worker?: Worker) => void;
20
+ Stop: () => void;
21
+ get worker(): Worker | null;
22
+ emit(event: string, ...args: any[]): this;
23
+ }
24
+ //# sourceMappingURL=ipcMessageHandler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ipcMessageHandler.d.ts","sourceRoot":"","sources":["../src/ipcMessageHandler.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAgB,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAiB,MAAM,mBAAmB,CAAA;AAMzE,MAAM,WAAW,wBAAwB;IACrC,MAAM,EAAE,UAAU,CAAA;IAClB,6BAA6B,EAAE,MAAM,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;CAEpB;AAED,qBAAa,iBAAkB,SAAQ,WAAW;;gBAMlC,OAAO,EAAE,wBAAwB;IAU7C,IAAI,QAAQ,eAEX;IAED,YAAY,aAuBX;IAED,WAAW,aAuBV;IAED,WAAW,YAAmB,UAAU,KAAG,QAAQ,UAAU,CAAC,CAW7D;IAwBQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI;IAejD,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,GAAG,GAAG,IAAI;IAQjD,KAAK,YAAa,MAAM,UAOvB;IAED,IAAI,aAOH;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAE1B;IAEQ,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAcrD"}
@@ -4,6 +4,7 @@ export interface IPCMessageManagerOptions {
4
4
  logger: ISTSLogger;
5
5
  requestResponseMessageTimeout: number;
6
6
  namespace: string;
7
+ role: 'SERVER' | 'CLIENT';
7
8
  messageSender: (payload: IIPCMessageProcessorIPCPayload, options: any) => void;
8
9
  ProcessRequestMessage: (payload: IIPCMessageProcessorIPCPayload, options: any) => Promise<JSONObject>;
9
10
  ProcessResponseMessage?: (reesponses: Record<string, IIPCMessageProcessorIPCPayload>, options: any) => Promise<boolean>;
@@ -20,9 +21,9 @@ export declare class IPCMessageManager {
20
21
  constructor(options: IPCMessageManagerOptions);
21
22
  get id(): string;
22
23
  ReceivedMessageFromMaster(msg: any): void;
23
- SendMessage: (payload: JSONObject, options: any) => Promise<JSONObject>;
24
- Start: (options: any) => void;
25
- Stop: (options: any) => void;
24
+ SendMessage: (payload: JSONObject, options?: any) => Promise<JSONObject>;
25
+ Start: (options?: any) => void;
26
+ Stop: (options?: any) => void;
26
27
  ProcessMessage: (msg: any, options: any) => Promise<void>;
27
28
  }
28
29
  //# sourceMappingURL=ipcMessageManager.d.ts.map
@@ -1 +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,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9E,qBAAqB,EAAE,CAAC,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IACrG,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvH,oBAAoB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5C,mBAAmB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;CAC9C;AACD;;;;GAIG;AACH,qBAAa,iBAAiB;;gBAOd,OAAO,EAAE,wBAAwB;IAU7C,IAAI,EAAE,WAEL;IAGD,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIlC,WAAW,YAAa,UAAU,WAAW,GAAG,KAAG,QAAQ,UAAU,CAAC,CAUrE;IA6DD,KAAK,YAAa,GAAG,UAGpB;IAED,IAAI,YAAa,GAAG,UAUnB;IAGD,cAAc,QAAe,GAAG,WAAW,GAAG,mBAgB7C;CACJ"}
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,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;IAC9E,qBAAqB,EAAE,CAAC,OAAO,EAAE,8BAA8B,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,UAAU,CAAC,CAAA;IACrG,sBAAsB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,8BAA8B,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACvH,oBAAoB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;IAC5C,mBAAmB,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;CAC9C;AACD;;;;GAIG;AACH,qBAAa,iBAAiB;;gBAOd,OAAO,EAAE,wBAAwB;IAU7C,IAAI,EAAE,WAEL;IAGD,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIlC,WAAW,YAAa,UAAU,YAAY,GAAG,KAAG,QAAQ,UAAU,CAAC,CAUtE;IAsED,KAAK,aAAc,GAAG,UAGrB;IAED,IAAI,aAAc,GAAG,UAUpB;IAGD,cAAc,QAAe,GAAG,WAAW,GAAG,mBAgB7C;CACJ"}