@nsshunt/stsappframework 2.19.234 → 2.19.238
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/processbase.js +9 -53
- package/dist/processbase.js.map +1 -1
- package/dist/serverprocessbase.js +7 -7
- package/dist/serverprocessbase.js.map +1 -1
- package/dist/singleprocessbase.js +3 -3
- package/dist/singleprocessbase.js.map +1 -1
- package/dist/stslatencycontroller.js +5 -1
- package/dist/stslatencycontroller.js.map +1 -1
- package/dist/tcpserver/app.js +3 -2
- package/dist/tcpserver/app.js.map +1 -1
- package/dist/tcpserver/appConfig.js +2 -1
- package/dist/tcpserver/appConfig.js.map +1 -1
- package/dist/testing/app.js +4 -3
- package/dist/testing/app.js.map +1 -1
- package/dist/testing/appConfig.js +7 -4
- package/dist/testing/appConfig.js.map +1 -1
- package/dist/testing/appWorkerWSS.js +137 -0
- package/dist/testing/appWorkerWSS.js.map +1 -0
- package/dist/testing/singleservertest.test.js +121 -3
- package/dist/testing/singleservertest.test.js.map +1 -1
- package/dist/workerprocessbase.js.map +1 -1
- package/package.json +2 -1
- package/src/kafkatesting/produce.js +0 -1
- package/src/processbase.ts +10 -62
- package/src/processoptions.ts +5 -0
- package/src/serverprocessbase.ts +7 -7
- package/src/singleprocessbase.ts +3 -3
- package/src/stslatencycontroller.ts +5 -1
- package/src/tcpserver/app.ts +2 -2
- package/src/tcpserver/appConfig.ts +2 -1
- package/src/testing/app.ts +4 -3
- package/src/testing/appConfig.ts +9 -5
- package/src/testing/appWorkerWSS.ts +153 -0
- package/src/testing/docker-compose.yml +20 -0
- package/src/testing/singleservertest.test.ts +145 -4
- package/src/workerprocessbase.ts +0 -1
- package/types/processbase.d.ts.map +1 -1
- package/types/processoptions.d.ts +4 -0
- package/types/processoptions.d.ts.map +1 -1
- package/types/serverprocessbase.d.ts +1 -1
- package/types/serverprocessbase.d.ts.map +1 -1
- package/types/stslatencycontroller.d.ts.map +1 -1
- package/types/tcpserver/appConfig.d.ts +1 -1
- package/types/tcpserver/appConfig.d.ts.map +1 -1
- package/types/testing/appConfig.d.ts +1 -1
- package/types/testing/appConfig.d.ts.map +1 -1
- package/types/testing/appWorkerWSS.d.ts +26 -0
- package/types/testing/appWorkerWSS.d.ts.map +1 -0
- package/types/workerprocessbase.d.ts.map +1 -1
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
import debugModule from 'debug'
|
|
2
|
+
const debug = debugModule(`proc:${process.pid}`);
|
|
3
|
+
|
|
4
|
+
import { Socket } from 'socket.io'
|
|
5
|
+
import cluster from 'node:cluster';
|
|
6
|
+
|
|
7
|
+
import { WorkerProcessBase, STSNamespace, STSRoom, SocketIoServerHelper, ServerSocketEvent,
|
|
8
|
+
STSEvent, IProcessBase, STSSocketIONamespace } from './../index'
|
|
9
|
+
|
|
10
|
+
import { Sleep } from '@nsshunt/stsutils';
|
|
11
|
+
|
|
12
|
+
export enum InstrumentManagerEventName {
|
|
13
|
+
CONNECT = 'connect', //@@ should come from socketiohelper
|
|
14
|
+
|
|
15
|
+
SUBSCRIBE = 'stsInstrumentManager-Subscribe',
|
|
16
|
+
UNSUBSCRIBE = 'stsInstrumentManager-Unsubscribe',
|
|
17
|
+
SUBSCRIBE_KEEP_ALIVE = 'stsInstrumentManager-Subscribe-KeepAlive'
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export interface IIPCSocketMessage {
|
|
21
|
+
socketId: string
|
|
22
|
+
workerId: number
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
data: any
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export enum InstrumentManagerSubCommand {
|
|
28
|
+
OUTPUT_SUBSCRIPTION = 'stsInstrumentManager-OutputSubscriptions'
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export enum IPCCommands {
|
|
32
|
+
PUBLISH_INSTRUMENT_DATA = 'PUBLISH_INSTRUMENT_DATA'
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export class WorkerProcess extends WorkerProcessBase
|
|
36
|
+
{
|
|
37
|
+
#terminate = false;
|
|
38
|
+
|
|
39
|
+
constructor(options: any)
|
|
40
|
+
{
|
|
41
|
+
super(options);
|
|
42
|
+
|
|
43
|
+
//this.socketIoHelper = new SocketIoHelper(this as IProcessBase);
|
|
44
|
+
this.socketIoServerHelper = new SocketIoServerHelper({
|
|
45
|
+
logger: this.LogEx
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
|
+
ReceivedMessageFromMaster = async (messageData: any) => {
|
|
51
|
+
// Only response to these message types (note should be part of generic pub/sub pattern in framework)
|
|
52
|
+
if (messageData.subCommand) {
|
|
53
|
+
if (messageData.subCommand.localeCompare(InstrumentManagerSubCommand.OUTPUT_SUBSCRIPTION) === 0) {
|
|
54
|
+
//console.log(`WorkerProcess.ReceivedMessageFromMaster: messageData: [${JSON.stringify(messageData)}]`.grey);
|
|
55
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster`.grey);
|
|
56
|
+
const { socketId, workerId, model } = messageData; //@@ type
|
|
57
|
+
|
|
58
|
+
if (cluster.worker && cluster.worker.id !== workerId) {
|
|
59
|
+
// Invalid data - this workerId must match
|
|
60
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid workerId: [${workerId}]. Should have been: [${cluster.worker.id}].`.red);
|
|
61
|
+
} else {
|
|
62
|
+
const workerProcess: WorkerProcess = this as WorkerProcess;
|
|
63
|
+
if (workerProcess.stsMonitorNamespace !== null) {
|
|
64
|
+
const stsMonitorNamespace = workerProcess.stsMonitorNamespace.socketionamespace;
|
|
65
|
+
const sockets = await stsMonitorNamespace.fetchSockets();
|
|
66
|
+
for (const socket of sockets) {
|
|
67
|
+
if (socket.id.localeCompare(socketId) === 0) {
|
|
68
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Sending payload to subscribed client.`.green);
|
|
69
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
70
|
+
socket.emit(STSEvent.STSSubInstrumentData as any, model);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid socketId. Expecting socket to existing in socket namespace collection.`.red);
|
|
75
|
+
// Invalid - could not find matching socketid to send to
|
|
76
|
+
} else {
|
|
77
|
+
console.log(`WorkerProcess.ReceivedMessageFromMaster: Invalid workerProcess.stsMonitorNamespace is null. Expecting non-null value.`.red);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
#SendIPCMessageToMaster(socket: Socket, eventName: any, data: any): void {
|
|
85
|
+
try {
|
|
86
|
+
if (cluster.worker) {
|
|
87
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${eventName}]`.grey);
|
|
88
|
+
const payload: IIPCSocketMessage = {
|
|
89
|
+
socketId: socket.id,
|
|
90
|
+
workerId: cluster.worker.id,
|
|
91
|
+
data: data
|
|
92
|
+
}
|
|
93
|
+
//console.log(`WorkerProcess.#SendIPCMessageToMaster: payload: [${JSON.stringify(payload)}]`.grey);
|
|
94
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster`.grey);
|
|
95
|
+
(process as any).send( { command: eventName, payload }, null, { swallowErrors: true }, (error: any) => {
|
|
96
|
+
if (error) {
|
|
97
|
+
console.error(`Error with WorkerProcess:SendIPCMessageToMaster(1): [${error}]`.red);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
} catch (error) {
|
|
102
|
+
console.error(`Error with WorkerProcess:SendIPCMessageToMaster(2): [${error}]`.red);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
#GetServerSocketEvent(eventName: any): ServerSocketEvent {
|
|
107
|
+
return {
|
|
108
|
+
serverEventName: eventName,
|
|
109
|
+
serverEventCb: (socket, data): void => this.#SendIPCMessageToMaster(socket, eventName, data)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
WorkerStarted(): any
|
|
114
|
+
{
|
|
115
|
+
let socketIoNamespace: STSSocketIONamespace | null = null;
|
|
116
|
+
if (this.socketIoServerHelper) {
|
|
117
|
+
socketIoNamespace = this.socketIoServerHelper.SetupNamespace(this.io as any, STSNamespace.STSMonitor, [
|
|
118
|
+
STSRoom.STSInstrumentDataRoom,
|
|
119
|
+
STSRoom.STSRunnerRoom
|
|
120
|
+
],
|
|
121
|
+
false,
|
|
122
|
+
[
|
|
123
|
+
this.#GetServerSocketEvent(InstrumentManagerEventName.SUBSCRIBE),
|
|
124
|
+
this.#GetServerSocketEvent(InstrumentManagerEventName.UNSUBSCRIBE),
|
|
125
|
+
this.#GetServerSocketEvent(InstrumentManagerEventName.SUBSCRIBE_KEEP_ALIVE),
|
|
126
|
+
{
|
|
127
|
+
serverEventName: InstrumentManagerEventName.CONNECT,
|
|
128
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
129
|
+
serverEventCb: (socket, data): void => {
|
|
130
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${ InstrumentManagerEventName.CONNECT}]`.grey);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
serverEventName: 'sts_connect',
|
|
135
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
136
|
+
serverEventCb: (socket, data): void => {
|
|
137
|
+
console.log(`WorkerProcess.#SendIPCMessageToMaster: eventName: [${ InstrumentManagerEventName.CONNECT}]`.grey);
|
|
138
|
+
socket.emit('sts_connect_reply', { someData: 'hello world'});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
]);
|
|
142
|
+
} else {
|
|
143
|
+
throw new Error('WorkerProcess:WorkerStarted(): this.socketIoHelper is null')
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
get stsMonitorNamespace(): STSSocketIONamespace | null {
|
|
148
|
+
if (this.socketIoServerHelper !== null) {
|
|
149
|
+
return this.socketIoServerHelper.GetNamespace(STSNamespace.STSMonitor);
|
|
150
|
+
}
|
|
151
|
+
return null;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
version: '2'
|
|
2
|
+
services:
|
|
3
|
+
zookeeper:
|
|
4
|
+
image: wurstmeister/zookeeper
|
|
5
|
+
ports:
|
|
6
|
+
- "2181:2181"
|
|
7
|
+
restart: unless-stopped
|
|
8
|
+
|
|
9
|
+
kafka:
|
|
10
|
+
image: wurstmeister/kafka
|
|
11
|
+
ports:
|
|
12
|
+
- "9092:9092"
|
|
13
|
+
environment:
|
|
14
|
+
DOCKER_API_VERSION: 1.22
|
|
15
|
+
KAFKA_ADVERTISED_HOST_NAME: 192.168.14.92
|
|
16
|
+
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
|
|
17
|
+
KAFKA_CREATE_TOPICS: "topic-name2:3:1"
|
|
18
|
+
volumes:
|
|
19
|
+
- /var/run/docker.sock:/var/run/docker.sock
|
|
20
|
+
restart: unless-stopped
|
|
@@ -15,13 +15,48 @@ import * as https from 'node:https'
|
|
|
15
15
|
|
|
16
16
|
import { it, beforeAll, afterAll, test, describe, expect } from 'vitest';
|
|
17
17
|
|
|
18
|
+
import { ISocketDetail, SocketIoClientHelper, ISocketIoClientHelperOptions } from '@nsshunt/stssocketio-client'
|
|
19
|
+
|
|
20
|
+
import { WorkerProcessBase, STSNamespace, STSRoom, SocketIoServerHelper, ServerSocketEvent,
|
|
21
|
+
STSEvent, IProcessBase, STSSocketIONamespace, STSClientSocket } from './../index'
|
|
22
|
+
|
|
23
|
+
//const { Kafka } = require('kafkajs')
|
|
24
|
+
|
|
25
|
+
import { DockerComposeEnvironment, Wait, AlwaysPullPolicy } from 'testcontainers'
|
|
26
|
+
|
|
18
27
|
describe("Single Server Test", () =>
|
|
19
28
|
{
|
|
29
|
+
/*
|
|
30
|
+
const kafka = new Kafka({
|
|
31
|
+
clientId: 'my-app',
|
|
32
|
+
brokers: ['192.168.14.92:9092']
|
|
33
|
+
//brokers: ['localhost:9092', 'kafka2:9092'],
|
|
34
|
+
})
|
|
35
|
+
let producer: any;
|
|
36
|
+
let environment: any;
|
|
37
|
+
*/
|
|
38
|
+
|
|
20
39
|
let app: SingleProcessBase | MasterProcessBase | null = null;
|
|
21
40
|
let httpsAgent: https.Agent | null = null;
|
|
22
41
|
|
|
23
42
|
const endpoint = 'https://localhost'
|
|
24
43
|
|
|
44
|
+
const socketUtilsoptions: ISocketIoClientHelperOptions = {
|
|
45
|
+
agentOptions: {
|
|
46
|
+
keepAlive: goptions.keepAlive,
|
|
47
|
+
maxSockets: goptions.maxSockets,
|
|
48
|
+
maxTotalSockets: goptions.maxTotalSockets,
|
|
49
|
+
maxFreeSockets: goptions.maxFreeSockets,
|
|
50
|
+
timeout: 30000, //@@ config
|
|
51
|
+
rejectUnauthorized: goptions.isProduction // Allows self signed certs in non production mode(s)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const socketUtils = new SocketIoClientHelper(socketUtilsoptions);
|
|
56
|
+
|
|
57
|
+
const instrumentManagerAddress =
|
|
58
|
+
`${endpoint}:${goptions.rest01port}/${STSNamespace.STSMonitor}/`;
|
|
59
|
+
|
|
25
60
|
const HandleError = (error: any) => {
|
|
26
61
|
debug(`Error: [${error}]`.red)
|
|
27
62
|
if (axios.isAxiosError(error)) {
|
|
@@ -69,8 +104,6 @@ describe("Single Server Test", () =>
|
|
|
69
104
|
,httpsAgent: httpsAgent
|
|
70
105
|
});
|
|
71
106
|
|
|
72
|
-
//debug(retVal.data);
|
|
73
|
-
|
|
74
107
|
return retVal;
|
|
75
108
|
} catch (error: any) {
|
|
76
109
|
HandleError(error);
|
|
@@ -78,10 +111,77 @@ describe("Single Server Test", () =>
|
|
|
78
111
|
}
|
|
79
112
|
}
|
|
80
113
|
|
|
114
|
+
/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/no-unused-vars */
|
|
115
|
+
/*
|
|
116
|
+
const socketDetail: ISocketDetail = socketUtils.SetupClientSideSocket('STSUITerm', instrumentManagerAddress, [
|
|
117
|
+
{
|
|
118
|
+
eventName: 'hello',
|
|
119
|
+
eventCb: (socket: any, data: any): void => {
|
|
120
|
+
debug(`Received: [hello:${data}]`);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
eventName: 'goodbye',
|
|
125
|
+
eventCb: (socket: any, data: any) => {
|
|
126
|
+
debug(`Received: [goodbye:${data}]`);
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
eventName: 'registerEcho',
|
|
131
|
+
eventCb: (socket: any, data: any) => {
|
|
132
|
+
debug(`Received: [registerEcho:${JSON.stringify(data)}]`);
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
eventName: STSEvent.connect,
|
|
137
|
+
eventCb: (socket: STSClientSocket, data: any) => {
|
|
138
|
+
socket.emit('joinRoom', STSRoom.STSInstrumentDataRoom);
|
|
139
|
+
}
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
eventName: 'sts_connect_reply',
|
|
143
|
+
eventCb: (socket: STSClientSocket, data: any) => {
|
|
144
|
+
debug(`Received: [sts_connect_reply:${JSON.stringify(data)}]`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
]);
|
|
148
|
+
*/
|
|
81
149
|
|
|
82
150
|
beforeAll(async () =>
|
|
83
151
|
{
|
|
84
|
-
|
|
152
|
+
/*
|
|
153
|
+
const composeFilePath = "/home/marcusbettens/projects/stsappframework/src/testing";
|
|
154
|
+
const composeFile = "docker-compose.yml";
|
|
155
|
+
try {
|
|
156
|
+
environment = await new DockerComposeEnvironment(composeFilePath, composeFile)
|
|
157
|
+
.withWaitStrategy("kafka", Wait.forLogMessage("[KafkaServer id=1001] started (kafka.server.KafkaServer)"))
|
|
158
|
+
.withPullPolicy(new AlwaysPullPolicy())
|
|
159
|
+
.up()
|
|
160
|
+
} catch (error) {
|
|
161
|
+
console.error(error)
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
console.log('done'.green)
|
|
166
|
+
console.log('done'.green)
|
|
167
|
+
console.log('done'.green)
|
|
168
|
+
console.log('done'.green)
|
|
169
|
+
console.log('done'.green)
|
|
170
|
+
console.log('done'.green)
|
|
171
|
+
console.log('done'.green)
|
|
172
|
+
console.log('done'.green)
|
|
173
|
+
console.log('done'.green)
|
|
174
|
+
console.log('done'.green)
|
|
175
|
+
console.log('done'.green)
|
|
176
|
+
console.log('done'.green)
|
|
177
|
+
console.log('done'.green)
|
|
178
|
+
console.log('done'.green)
|
|
179
|
+
*/
|
|
180
|
+
|
|
181
|
+
/*
|
|
182
|
+
producer = kafka.producer()
|
|
183
|
+
await producer.connect()
|
|
184
|
+
*/
|
|
85
185
|
|
|
86
186
|
/*
|
|
87
187
|
process.env.AS_ENDPOINT = testHelper.authHost;
|
|
@@ -95,7 +195,7 @@ describe("Single Server Test", () =>
|
|
|
95
195
|
//goptions.asport = testHelper.authPort;
|
|
96
196
|
*/
|
|
97
197
|
|
|
98
|
-
const appOptions = ServiceConfigOptions(true);
|
|
198
|
+
const appOptions = ServiceConfigOptions(true, true);
|
|
99
199
|
appOptions.processExitOnTerminate = false;
|
|
100
200
|
//app = new SingleProcessBase(appOptions)
|
|
101
201
|
app = new MasterProcessBase(appOptions)
|
|
@@ -107,6 +207,11 @@ describe("Single Server Test", () =>
|
|
|
107
207
|
{
|
|
108
208
|
await Sleep(500);
|
|
109
209
|
|
|
210
|
+
// Kafka disconnect
|
|
211
|
+
//await producer.disconnect()
|
|
212
|
+
|
|
213
|
+
//@@await environment.down();
|
|
214
|
+
|
|
110
215
|
//await (app as SingleProcessBase).TerminateApplication();
|
|
111
216
|
await Sleep(1000);
|
|
112
217
|
app = null;
|
|
@@ -131,11 +236,47 @@ describe("Single Server Test", () =>
|
|
|
131
236
|
const num = 50;
|
|
132
237
|
expect.assertions(num * 2);
|
|
133
238
|
for (let i=0; i < num; i++) {
|
|
239
|
+
|
|
240
|
+
/*
|
|
241
|
+
const retValKafka = await producer.send({
|
|
242
|
+
topic: 'topic-name2',
|
|
243
|
+
messages: [
|
|
244
|
+
{ key: 'key1', value: `hello world - ${i}` },
|
|
245
|
+
],
|
|
246
|
+
})
|
|
247
|
+
*/
|
|
248
|
+
|
|
134
249
|
const retVal = await getLatency();
|
|
135
250
|
const retValObj = retVal?.data.data;
|
|
136
251
|
expect(retValObj).toMatch('Ping Completed At:');
|
|
137
252
|
expect(retVal && retVal.status).toEqual(200);
|
|
138
253
|
}
|
|
139
254
|
}, 10000);
|
|
255
|
+
|
|
256
|
+
test('client socket testing', async () =>
|
|
257
|
+
{
|
|
258
|
+
expect.assertions(1);
|
|
259
|
+
|
|
260
|
+
let complete = false;
|
|
261
|
+
|
|
262
|
+
const socketDetail: ISocketDetail = socketUtils.SetupClientSideSocket('STSUITerm', instrumentManagerAddress, [
|
|
263
|
+
{
|
|
264
|
+
eventName: 'sts_connect_reply',
|
|
265
|
+
eventCb: (socket: STSClientSocket, data: any) => {
|
|
266
|
+
debug(`Received: [sts_connect_reply:${JSON.stringify(data)}]`);
|
|
267
|
+
expect(1).toEqual(1);
|
|
268
|
+
complete = true;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
]);
|
|
272
|
+
|
|
273
|
+
socketDetail.socket?.emit('sts_connect')
|
|
274
|
+
|
|
275
|
+
while (!complete) {
|
|
276
|
+
await Sleep(100);
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
//expect(1).toEqual(1);
|
|
280
|
+
}, 3000);
|
|
140
281
|
});
|
|
141
282
|
|
package/src/workerprocessbase.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import debugModule from 'debug'
|
|
2
2
|
const debug = debugModule(`proc:${process.pid}`);
|
|
3
3
|
|
|
4
|
-
|
|
5
4
|
import { Gauge, InstrumentGaugeTelemetry } from '@nsshunt/stsinstrumentation'
|
|
6
5
|
import { JSONObject } from '@nsshunt/stsutils'
|
|
7
6
|
import { ProcessOptions } from './processoptions'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processbase.d.ts","sourceRoot":"","sources":["../src/processbase.ts"],"names":[],"mappings":"AAIA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAO3B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAA+E,MAAM,6BAA6B,CAAA;AAEzJ,OAAO,EAAE,aAAa,EAAyC,MAAM,4BAA4B,CAAA;AAKjG,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAA;AAG9D,OAAO,EAAE,2BAA2B,EAAuC,qBAAqB,EAEvC,MAAM,6BAA6B,CAAA;AAQ5F,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAOnE,8BAAsB,WAAY,SAAQ,cAAe,YAAW,YAAY;;gBAShE,OAAO,EAAE,cAAc;IAUnC,IAAa,OAAO,IAAI,cAAc,CAErC;
|
|
1
|
+
{"version":3,"file":"processbase.d.ts","sourceRoot":"","sources":["../src/processbase.ts"],"names":[],"mappings":"AAIA,OAAO,MAAM,MAAM,QAAQ,CAAA;AAO3B,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAA+E,MAAM,6BAA6B,CAAA;AAEzJ,OAAO,EAAE,aAAa,EAAyC,MAAM,4BAA4B,CAAA;AAKjG,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAc,MAAM,mBAAmB,CAAA;AAG9D,OAAO,EAAE,2BAA2B,EAAuC,qBAAqB,EAEvC,MAAM,6BAA6B,CAAA;AAQ5F,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAOnE,8BAAsB,WAAY,SAAQ,cAAe,YAAW,YAAY;;gBAShE,OAAO,EAAE,cAAc;IAUnC,IAAa,OAAO,IAAI,cAAc,CAErC;IAkGD,oBAAoB;IAuBpB,wBAAwB,IAAI,qBAAqB;IAIjD,0BAA0B,IAAI,IAAI;IAIlC,cAAc,aAuCb;IAED,gBAAgB,mBAAoB,KAAK,aAAa,uBAAuB,UAI5E;IAED,IAAI,oBAAoB,IAAI,2BAA2B,GAAG,IAAI,CAE7D;IAED,KAAK,YAAa,GAAG,UASpB;IAED,gBAAgB,CAAC,cAAc,EAAE,KAAK,GAAG,OAAO;IAQhD,gBAAgB,sBAMf;IAED;;;OAGA;IACA,eAAe,IAAI,GAAG;IAItB,IAAI,oBAAoB,IAAI,qBAAqB,GAAG,IAAI,CAGvD;IAED,IAAI,oBAAoB,CAAC,KAAK,EAAE,qBAAqB,GAAG,IAAI,EAG3D;IAgBK,iBAAiB;IAOvB,IAAI,WAAW,IAAI,aAAa,GAAG,IAAI,CAyBtC;IAED,UAAU,QAAa,QAAQ,MAAM,CAAC,CAkBrC;IAED,kBAAkB,sBA0BjB;IAED,eAAe,WAAY,GAAG,kBAQ5B;CACL"}
|
|
@@ -121,5 +121,9 @@ export interface ProcessOptions {
|
|
|
121
121
|
useRedisInstrumentationTransport?: boolean;
|
|
122
122
|
redisInstrumentationTransportUrl?: string;
|
|
123
123
|
workerExec?: string;
|
|
124
|
+
/**
|
|
125
|
+
* Is this application using nodejs cluster mode?
|
|
126
|
+
*/
|
|
127
|
+
clusterMode: boolean;
|
|
124
128
|
}
|
|
125
129
|
//# sourceMappingURL=processoptions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"processoptions.d.ts","sourceRoot":"","sources":["../src/processoptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAChC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAEtF,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC9B,UAAU,eAAe;IACtB,YAAY,gBAAgB;CAC/B;AAGD,MAAM,WAAW,cAAc;IACvB;;GAED;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACN,iBAAiB,EAAE,MAAM,CAAA;IAItB,UAAU,EAAE,aAAa,CAAA;IAE5B;;OAEG;IACA,kBAAkB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACA,0BAA0B,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAErB;;OAEG;IACA,iBAAiB,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACA,QAAQ,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACA,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEf;;OAEG;IACA,qBAAqB,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACA,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEA;IACA,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAI1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAE9C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,mBAAmB,CAAA;IAE/C;;;OAGG;IACH,+BAA+B,CAAC,EAAE,mBAAmB,CAAA;IAErD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC,kCAAkC,EAAE,MAAM,CAAA;IAE1C,yBAAyB,EAAE,MAAM,CAAA;IAEjC,eAAe,EAAE,OAAO,CAAA;IAExB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAE1C,gCAAgC,CAAC,EAAE,MAAM,CAAA;IAEzC,UAAU,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"processoptions.d.ts","sourceRoot":"","sources":["../src/processoptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,WAAW,gBAAgB;IAChC,IAAI,GAAG,IAAI,OAAO,CAAC,OAAO,CAAA;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAA;AAEtF,oBAAY,aAAa;IACrB,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,WAAW,gBAAgB;IAC9B,UAAU,eAAe;IACtB,YAAY,gBAAgB;CAC/B;AAGD,MAAM,WAAW,cAAc;IACvB;;GAED;IACH,QAAQ,EAAE,OAAO,CAAA;IAEjB;;OAEG;IACN,iBAAiB,EAAE,MAAM,CAAA;IAItB,UAAU,EAAE,aAAa,CAAA;IAE5B;;OAEG;IACA,kBAAkB,EAAE,MAAM,CAAA;IAE7B;;OAEG;IACA,0BAA0B,EAAE,MAAM,CAAA;IAElC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAA;IAE/B;;OAEG;IACH,SAAS,EAAE,OAAO,CAAA;IAErB;;OAEG;IACA,iBAAiB,EAAE,OAAO,CAAA;IAE7B;;OAEG;IACA,QAAQ,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACA,OAAO,EAAE,MAAM,CAAA;IAEf;;;;;;;;;;;OAWG;IACH,UAAU,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEf;;OAEG;IACA,qBAAqB,EAAE,MAAM,CAAA;IAEhC;;OAEG;IACA,WAAW,EAAE,MAAM,CAAA;IAEnB;;OAEA;IACA,cAAc,EAAE,MAAM,CAAA;IAEtB;;OAEG;IACH,cAAc,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAA;IAI1B,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAE9C;;;OAGG;IACH,yBAAyB,CAAC,EAAE,mBAAmB,CAAA;IAE/C;;;OAGG;IACH,+BAA+B,CAAC,EAAE,mBAAmB,CAAA;IAErD;;;OAGG;IACH,UAAU,EAAE,OAAO,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;IAEpB;;OAEG;IACH,yBAAyB,EAAE,OAAO,CAAA;IAElC,kCAAkC,EAAE,MAAM,CAAA;IAE1C,yBAAyB,EAAE,MAAM,CAAA;IAEjC,eAAe,EAAE,OAAO,CAAA;IAExB,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,gCAAgC,CAAC,EAAE,OAAO,CAAA;IAE1C,gCAAgC,CAAC,EAAE,MAAM,CAAA;IAEzC,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAA;CACvB"}
|
|
@@ -15,7 +15,7 @@ export declare class ServerProcessBase extends ProcessBase {
|
|
|
15
15
|
get expressServer(): STSExpressServer | null;
|
|
16
16
|
set expressServer(val: STSExpressServer | null);
|
|
17
17
|
ProcessTerminating: () => Promise<void>;
|
|
18
|
-
Terminate: (
|
|
18
|
+
Terminate: (clusterPerformExit: boolean, signal?: any) => Promise<void>;
|
|
19
19
|
SetupSTSServer: () => Promise<void>;
|
|
20
20
|
}
|
|
21
21
|
//# sourceMappingURL=serverprocessbase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serverprocessbase.d.ts","sourceRoot":"","sources":["../src/serverprocessbase.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;gBAUlC,OAAO,EAAE,cAAc;IAInC,IAAI,UAAU,QAEb;IAED,IAAI,EAAE,+LAEL;IAED,IAAI,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAE3C;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAE7C;IAiMD,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IASD,SAAS,
|
|
1
|
+
{"version":3,"file":"serverprocessbase.d.ts","sourceRoot":"","sources":["../src/serverprocessbase.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAiB,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAS5C,OAAO,EAAE,MAAM,EAAiB,MAAM,WAAW,CAAC;AAKlD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAO5C;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;;gBAUlC,OAAO,EAAE,cAAc;IAInC,IAAI,UAAU,QAEb;IAED,IAAI,EAAE,+LAEL;IAED,IAAI,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAE3C;IACD,IAAI,aAAa,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI,EAE7C;IAiMD,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IASD,SAAS,uBAA8B,OAAO,WAAW,GAAG,KAAG,QAAQ,IAAI,CAAC,CAkG3E;IAED,cAAc,QAAY,QAAQ,IAAI,CAAC,CAetC;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stslatencycontroller.d.ts","sourceRoot":"","sources":["../src/stslatencycontroller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAE3C,MAAM,EAAE,YAAY;IAK1B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;
|
|
1
|
+
{"version":3,"file":"stslatencycontroller.d.ts","sourceRoot":"","sources":["../src/stslatencycontroller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,qBAAa,oBAAqB,SAAQ,iBAAiB;gBAE3C,MAAM,EAAE,YAAY;IAK1B,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;CActC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appConfig.d.ts","sourceRoot":"","sources":["../../src/tcpserver/appConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAA+B,MAAM,UAAU,CAAA;AAoBtE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"appConfig.d.ts","sourceRoot":"","sources":["../../src/tcpserver/appConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAA+B,MAAM,UAAU,CAAA;AAoBtE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,cAAc,CAwC5F"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"appConfig.d.ts","sourceRoot":"","sources":["../../src/testing/appConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAA+B,MAAM,MAAM,CAAA;AAsBlE,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,OAAO,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"appConfig.d.ts","sourceRoot":"","sources":["../../src/testing/appConfig.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAA+B,MAAM,MAAM,CAAA;AAsBlE,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,cAAc,CAgD5F"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { WorkerProcessBase, STSSocketIONamespace } from './../index';
|
|
2
|
+
export declare enum InstrumentManagerEventName {
|
|
3
|
+
CONNECT = "connect",
|
|
4
|
+
SUBSCRIBE = "stsInstrumentManager-Subscribe",
|
|
5
|
+
UNSUBSCRIBE = "stsInstrumentManager-Unsubscribe",
|
|
6
|
+
SUBSCRIBE_KEEP_ALIVE = "stsInstrumentManager-Subscribe-KeepAlive"
|
|
7
|
+
}
|
|
8
|
+
export interface IIPCSocketMessage {
|
|
9
|
+
socketId: string;
|
|
10
|
+
workerId: number;
|
|
11
|
+
data: any;
|
|
12
|
+
}
|
|
13
|
+
export declare enum InstrumentManagerSubCommand {
|
|
14
|
+
OUTPUT_SUBSCRIPTION = "stsInstrumentManager-OutputSubscriptions"
|
|
15
|
+
}
|
|
16
|
+
export declare enum IPCCommands {
|
|
17
|
+
PUBLISH_INSTRUMENT_DATA = "PUBLISH_INSTRUMENT_DATA"
|
|
18
|
+
}
|
|
19
|
+
export declare class WorkerProcess extends WorkerProcessBase {
|
|
20
|
+
#private;
|
|
21
|
+
constructor(options: any);
|
|
22
|
+
ReceivedMessageFromMaster: (messageData: any) => Promise<void>;
|
|
23
|
+
WorkerStarted(): any;
|
|
24
|
+
get stsMonitorNamespace(): STSSocketIONamespace | null;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=appWorkerWSS.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appWorkerWSS.d.ts","sourceRoot":"","sources":["../../src/testing/appWorkerWSS.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EACE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAIpE,oBAAY,0BAA0B;IACrC,OAAO,YAAY;IAEnB,SAAS,mCAAmC;IAC5C,WAAW,qCAAqC;IAChD,oBAAoB,6CAA6C;CACjE;AAED,MAAM,WAAW,iBAAiB;IACjC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAEhB,IAAI,EAAE,GAAG,CAAA;CACT;AAED,oBAAY,2BAA2B;IACtC,mBAAmB,6CAA6C;CAChE;AAED,oBAAY,WAAW;IACtB,uBAAuB,4BAA4B;CACnD;AAED,qBAAa,aAAc,SAAQ,iBAAiB;;gBAIpC,OAAO,EAAE,GAAG;IAWxB,yBAAyB,gBAAuB,GAAG,mBAgClD;IA+BD,aAAa,IAAI,GAAG;IAkCpB,IAAI,mBAAmB,IAAI,oBAAoB,GAAG,IAAI,CAKrD;CACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workerprocessbase.d.ts","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"workerprocessbase.d.ts","sourceRoot":"","sources":["../src/workerprocessbase.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAAiE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAEjH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAMvD;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,iBAAkB,YAAW,kBAAkB;;gBAKtE,OAAO,EAAE,cAAc;IAInC,aAAa;IAKb,yBAAyB,CAAC,GAAG,EAAE,GAAG;IAIzB,0BAA0B,IAAI,IAAI;IAwC3C,SAAS,YAAmB,GAAG,KAAG,QAAQ,MAAM,CAAC,CAUhD;IAGD,YAAY,aAAoB,MAAM,WAAW,GAAG,KAAG,QAAQ,UAAU,CAAC,CAWzE;IAED,kBAAkB,QAAa,QAAQ,IAAI,CAAC,CAE3C;IAED,WAAW,sBAMV;IAED,aAAa,sBAmEX;CACL"}
|