cry-ebus2 3.1.7 → 3.1.8
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/EbusClientEvents.js +1 -2
- package/dist/EbusConfiguration.js +1 -2
- package/dist/EbusReject.js +1 -5
- package/dist/EbusReject.js.map +1 -1
- package/dist/EbusRejectReason.js +1 -2
- package/dist/EbusRequestOptions.js +1 -2
- package/dist/EbusUnpackedResult.d.ts +1 -1
- package/dist/EbusUnpackedResult.js +8 -12
- package/dist/EbusUnpackedResult.js.map +1 -1
- package/dist/block.js +1 -5
- package/dist/block.js.map +1 -1
- package/dist/broker.d.ts +2 -2
- package/dist/broker.js +42 -46
- package/dist/broker.js.map +1 -1
- package/dist/client.js +1 -5
- package/dist/client.js.map +1 -1
- package/dist/clientBlocking.js +35 -39
- package/dist/clientBlocking.js.map +1 -1
- package/dist/clientNonBlocking.d.ts +1 -1
- package/dist/clientNonBlocking.d.ts.map +1 -1
- package/dist/clientNonBlocking.js +44 -52
- package/dist/clientNonBlocking.js.map +1 -1
- package/dist/consts.js +1 -4
- package/dist/consts.js.map +1 -1
- package/dist/deferredPromise.d.ts +36 -0
- package/dist/deferredPromise.d.ts.map +1 -0
- package/dist/deferredPromise.js +56 -0
- package/dist/deferredPromise.js.map +1 -0
- package/dist/delayWorker.js +6 -10
- package/dist/delayWorker.js.map +1 -1
- package/dist/echoWorker.js +4 -8
- package/dist/echoWorker.js.map +1 -1
- package/dist/errorWorker.js +6 -10
- package/dist/errorWorker.js.map +1 -1
- package/dist/index.js +15 -33
- package/dist/index.js.map +1 -1
- package/dist/loadConfiguration.js +4 -8
- package/dist/loadConfiguration.js.map +1 -1
- package/dist/pub.js +9 -13
- package/dist/pub.js.map +1 -1
- package/dist/rejectWorker.js +6 -10
- package/dist/rejectWorker.js.map +1 -1
- package/dist/run/all.js +12 -14
- package/dist/run/all.js.map +1 -1
- package/dist/run/broker.mjs +4 -6
- package/dist/run/broker.mjs.map +1 -1
- package/dist/run/call.js +13 -15
- package/dist/run/call.js.map +1 -1
- package/dist/run/calling.js +6 -8
- package/dist/run/calling.js.map +1 -1
- package/dist/run/callingBurst.js +6 -8
- package/dist/run/callingBurst.js.map +1 -1
- package/dist/run/delay.mjs +4 -6
- package/dist/run/delay.mjs.map +1 -1
- package/dist/run/echo.mjs +4 -6
- package/dist/run/echo.mjs.map +1 -1
- package/dist/run/error.mjs +4 -6
- package/dist/run/error.mjs.map +1 -1
- package/dist/run/ping.mjs +12 -14
- package/dist/run/ping.mjs.map +1 -1
- package/dist/run/pub.js +6 -8
- package/dist/run/pub.js.map +1 -1
- package/dist/run/reject.js +4 -6
- package/dist/run/reject.js.map +1 -1
- package/dist/run/sub.js +14 -18
- package/dist/run/sub.js.map +1 -1
- package/dist/run/termimalCommands.js +1 -3
- package/dist/run/termimalCommands.js.map +1 -1
- package/dist/run/workers.js +6 -8
- package/dist/run/workers.js.map +1 -1
- package/dist/serialize.js +11 -19
- package/dist/serialize.js.map +1 -1
- package/dist/service.d.ts +1 -1
- package/dist/service.js +9 -13
- package/dist/service.js.map +1 -1
- package/dist/sleep.js +1 -5
- package/dist/sleep.js.map +1 -1
- package/dist/sub.d.ts +1 -1
- package/dist/sub.d.ts.map +1 -1
- package/dist/sub.js +10 -14
- package/dist/sub.js.map +1 -1
- package/dist/test/config.js +10 -12
- package/dist/test/config.js.map +1 -1
- package/dist/test/echo.js +19 -21
- package/dist/test/echo.js.map +1 -1
- package/dist/test/index.d.ts +1 -0
- package/dist/test/index.js +1 -1
- package/dist/test/index.js.map +1 -1
- package/dist/test/pack.js +33 -35
- package/dist/test/pack.js.map +1 -1
- package/dist/test/performance.js +7 -9
- package/dist/test/performance.js.map +1 -1
- package/dist/test/pub.js +14 -16
- package/dist/test/pub.js.map +1 -1
- package/dist/test/pub2.js +8 -10
- package/dist/test/pub2.js.map +1 -1
- package/dist/test/reject.js +16 -18
- package/dist/test/reject.js.map +1 -1
- package/dist/test/services.js +19 -21
- package/dist/test/services.js.map +1 -1
- package/dist/test/stress.js +7 -9
- package/dist/test/stress.js.map +1 -1
- package/dist/test/timing.js +27 -29
- package/dist/test/timing.js.map +1 -1
- package/dist/types.js +4 -7
- package/dist/types.js.map +1 -1
- package/dist/worker.d.ts +1 -1
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +46 -53
- package/dist/worker.js.map +1 -1
- package/package.json +11 -9
- package/src/clientNonBlocking.ts +2 -2
- package/src/deferredPromise.ts +67 -0
- package/src/run/sub.ts +1 -1
- package/src/sub.ts +2 -2
- package/src/worker.ts +3 -8
- package/tsconfig.json +2 -2
package/dist/worker.js
CHANGED
|
@@ -1,20 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const serialize_js_1 = require("./serialize.js");
|
|
9
|
-
const sleep_js_1 = require("./sleep.js");
|
|
10
|
-
const EbusReject_js_1 = require("./EbusReject.js");
|
|
1
|
+
import { Log, serialize } from "cry-helpers";
|
|
2
|
+
import { Dealer } from "zeromq";
|
|
3
|
+
import { loadConfiguration } from "./loadConfiguration.js";
|
|
4
|
+
import { Header, Message } from "./types.js";
|
|
5
|
+
import { pack, unpack } from "./serialize.js";
|
|
6
|
+
import { sleep } from "./sleep.js";
|
|
7
|
+
import { EbusRejectError } from "./EbusReject.js";
|
|
11
8
|
const prefixes = ["EBUS_WORKER", "EBUS"];
|
|
12
|
-
const log = new
|
|
13
|
-
class Worker {
|
|
9
|
+
const log = new Log(prefixes);
|
|
10
|
+
export class Worker {
|
|
14
11
|
constructor(service, config = {}) {
|
|
15
12
|
this.service = "";
|
|
16
13
|
this.service = service || this.service;
|
|
17
|
-
this.configuration =
|
|
14
|
+
this.configuration = loadConfiguration(prefixes, config);
|
|
18
15
|
this.address = this.configuration.address;
|
|
19
16
|
this.lastHeartbeat = new Date().valueOf();
|
|
20
17
|
this.processing = false;
|
|
@@ -44,7 +41,7 @@ class Worker {
|
|
|
44
41
|
try {
|
|
45
42
|
try {
|
|
46
43
|
if (this.socket) {
|
|
47
|
-
await this.socket.send([null,
|
|
44
|
+
await this.socket.send([null, Header.Worker, Message.Heartbeat, this.service, null, null]);
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
47
|
catch (err) {
|
|
@@ -66,10 +63,10 @@ class Worker {
|
|
|
66
63
|
async start() {
|
|
67
64
|
log.debug(`worker for ${this.service} is starting`);
|
|
68
65
|
const loop = async () => {
|
|
69
|
-
this.socket = new
|
|
66
|
+
this.socket = new Dealer();
|
|
70
67
|
this.socket.reconnectInterval = 100;
|
|
71
68
|
await this.socket.connect(this.configuration.address);
|
|
72
|
-
await this.socket.send([null,
|
|
69
|
+
await this.socket.send([null, Header.Worker, Message.Ready, this.service]);
|
|
73
70
|
await this.socket.receive();
|
|
74
71
|
log.status(`started worker for ${this.service} on ${this.configuration.address}`);
|
|
75
72
|
this.startHeartbeat();
|
|
@@ -77,17 +74,17 @@ class Worker {
|
|
|
77
74
|
this.lastHeartbeat = new Date().valueOf();
|
|
78
75
|
try {
|
|
79
76
|
switch (type.toString()) {
|
|
80
|
-
case
|
|
77
|
+
case Message.Shutdown:
|
|
81
78
|
log.status(`worker for ${this.service} received broker shutdown signal`);
|
|
82
79
|
break;
|
|
83
|
-
case
|
|
80
|
+
case Message.Heartbeat:
|
|
84
81
|
log.trace(`worker for ${this.service} received heartbeat from broker`);
|
|
85
82
|
break;
|
|
86
|
-
case
|
|
83
|
+
case Message.ShutdownAndRestart:
|
|
87
84
|
log.status(`worker for ${this.service} received ShutdownAndRestart from broker`);
|
|
88
85
|
process.exit(1);
|
|
89
86
|
break;
|
|
90
|
-
case
|
|
87
|
+
case Message.Request:
|
|
91
88
|
this.processing = true;
|
|
92
89
|
await this.processRequest(reqId, optBuff, type, req, client);
|
|
93
90
|
this.processing = false;
|
|
@@ -98,8 +95,7 @@ class Worker {
|
|
|
98
95
|
}
|
|
99
96
|
}
|
|
100
97
|
catch (err) {
|
|
101
|
-
console.error(`error in worker for '${this.service}'
|
|
102
|
-
console.error(err);
|
|
98
|
+
console.error(`error in worker for '${this.service}'`, err);
|
|
103
99
|
return;
|
|
104
100
|
}
|
|
105
101
|
}
|
|
@@ -124,44 +120,43 @@ class Worker {
|
|
|
124
120
|
}
|
|
125
121
|
// to be implemented at the actual worker
|
|
126
122
|
async onError(err, req, opts) {
|
|
127
|
-
console.log('worker/onError - should override');
|
|
123
|
+
console.log('worker/onError - should override', (err === null || err === void 0 ? void 0 : err.message) || err, req);
|
|
128
124
|
}
|
|
129
125
|
async processRequest(reqId, optBuff, type, req, client) {
|
|
130
|
-
let opts =
|
|
126
|
+
let opts = serialize.unpack(optBuff);
|
|
131
127
|
log.debug(`worker for ${this.service} received request ${type} with opts`, opts);
|
|
132
128
|
let timeout = opts.receiveTimeout || this.configuration.receiveTimeout;
|
|
133
|
-
let responseMessageType =
|
|
129
|
+
let responseMessageType = Message.Reply;
|
|
134
130
|
let promises = [
|
|
135
|
-
this.process(
|
|
136
|
-
|
|
131
|
+
this.process(unpack(req, opts), opts),
|
|
132
|
+
sleep(timeout, new EbusRejectError("timeout", `timeout in worker for '${this.service}' after ${timeout} ms`, opts))
|
|
137
133
|
];
|
|
138
134
|
let rep;
|
|
139
135
|
try {
|
|
140
136
|
rep = await Promise.race(promises);
|
|
141
|
-
if (rep instanceof
|
|
142
|
-
log.warn(`request expired at worker for '${this.service}' after ${timeout} ms with opts ${
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
this.onError("timeout", (0, serialize_js_1.unpack)(req, opts), opts);
|
|
137
|
+
if (rep instanceof EbusRejectError && rep.reason === "timeout") {
|
|
138
|
+
log.warn(`request expired at worker for '${this.service}' after ${timeout} ms with opts ${serialize.pack(opts)}`);
|
|
139
|
+
log.warn(unpack(req, opts));
|
|
140
|
+
responseMessageType = Message.Timeout;
|
|
141
|
+
this.onError("timeout", unpack(req, opts), opts);
|
|
147
142
|
}
|
|
148
143
|
}
|
|
149
144
|
catch (err) {
|
|
150
145
|
rep = err;
|
|
151
|
-
if (!(rep instanceof
|
|
152
|
-
rep = new
|
|
153
|
-
responseMessageType =
|
|
146
|
+
if (!(rep instanceof EbusRejectError)) {
|
|
147
|
+
rep = new EbusRejectError("error", `error in worker for '${this.service}' process method: '${err.message}'`, err);
|
|
148
|
+
responseMessageType = Message.Error;
|
|
154
149
|
}
|
|
155
|
-
if (rep instanceof
|
|
156
|
-
responseMessageType =
|
|
157
|
-
if (rep instanceof
|
|
158
|
-
responseMessageType =
|
|
159
|
-
if (rep instanceof
|
|
160
|
-
responseMessageType =
|
|
161
|
-
this.onError(err,
|
|
150
|
+
if (rep instanceof EbusRejectError && rep.reason === "timeout")
|
|
151
|
+
responseMessageType = Message.Timeout;
|
|
152
|
+
if (rep instanceof EbusRejectError && rep.reason === "reject")
|
|
153
|
+
responseMessageType = Message.Reject;
|
|
154
|
+
if (rep instanceof EbusRejectError && rep.reason === "error")
|
|
155
|
+
responseMessageType = Message.Error;
|
|
156
|
+
this.onError(err, unpack(req, opts), opts);
|
|
162
157
|
}
|
|
163
158
|
let data = rep;
|
|
164
|
-
if (rep instanceof
|
|
159
|
+
if (rep instanceof EbusRejectError)
|
|
165
160
|
opts = { zip: false, raw: false, returningError: true, };
|
|
166
161
|
if ((rep === null || rep === void 0 ? void 0 : rep.data) !== undefined && (rep === null || rep === void 0 ? void 0 : rep.opts) !== undefined) {
|
|
167
162
|
opts = req.opts;
|
|
@@ -174,18 +169,17 @@ class Worker {
|
|
|
174
169
|
try {
|
|
175
170
|
await this.socket.send([
|
|
176
171
|
null,
|
|
177
|
-
|
|
172
|
+
Header.Worker,
|
|
178
173
|
responseMessageType,
|
|
179
174
|
client,
|
|
180
175
|
null,
|
|
181
176
|
reqId,
|
|
182
|
-
|
|
183
|
-
|
|
177
|
+
serialize.pack(opts),
|
|
178
|
+
pack(data, opts),
|
|
184
179
|
]);
|
|
185
180
|
}
|
|
186
181
|
catch (err) {
|
|
187
|
-
console.error(`unable to send reply for ${this.configuration.address}
|
|
188
|
-
console.error(err);
|
|
182
|
+
console.error(`unable to send reply for ${this.configuration.address}`, err);
|
|
189
183
|
throw err;
|
|
190
184
|
}
|
|
191
185
|
}
|
|
@@ -197,8 +191,8 @@ class Worker {
|
|
|
197
191
|
if (this.socket && !this.socket.closed) {
|
|
198
192
|
await this.socket.send([
|
|
199
193
|
null,
|
|
200
|
-
|
|
201
|
-
|
|
194
|
+
Header.Worker,
|
|
195
|
+
Message.Disconnect,
|
|
202
196
|
this.service,
|
|
203
197
|
]);
|
|
204
198
|
log.debug(`worker for ${this.service} is closing socket`);
|
|
@@ -210,7 +204,7 @@ class Worker {
|
|
|
210
204
|
log.error(`worker for '${this.service}' not connected, cannot publish to ${channel}`, message);
|
|
211
205
|
return;
|
|
212
206
|
}
|
|
213
|
-
await this.socket.send([null,
|
|
207
|
+
await this.socket.send([null, Header.Worker, Message.Publish, channel, pack(message, {})]);
|
|
214
208
|
log.debug(`ebus worker published on '${channel}'`, message);
|
|
215
209
|
// let socket = new Request()
|
|
216
210
|
// await socket.connect(this.configuration.address)
|
|
@@ -222,5 +216,4 @@ class Worker {
|
|
|
222
216
|
throw new Error(`worker for service ${this.service} must implement process()`);
|
|
223
217
|
}
|
|
224
218
|
}
|
|
225
|
-
exports.Worker = Worker;
|
|
226
219
|
//# sourceMappingURL=worker.js.map
|
package/dist/worker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"worker.js","sourceRoot":"","sources":["../src/worker.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cry-ebus2",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.8",
|
|
4
4
|
"description": "",
|
|
5
|
+
"type": "module",
|
|
5
6
|
"main": "./dist/index.js",
|
|
6
7
|
"types": "./dist/index.d.ts",
|
|
7
8
|
"scripts": {
|
|
@@ -15,22 +16,23 @@
|
|
|
15
16
|
"license": "ISC",
|
|
16
17
|
"devDependencies": {
|
|
17
18
|
"@types/dotenv": "^8.2.0",
|
|
18
|
-
"@types/node": "^18.7.
|
|
19
|
+
"@types/node": "^18.7.23",
|
|
19
20
|
"deep-equal-in-any-order": "^2.0.0",
|
|
20
21
|
"i": "^0.3.7",
|
|
21
|
-
"npm": "^8.
|
|
22
|
-
"typescript": "^4.
|
|
22
|
+
"npm": "^8.19.2",
|
|
23
|
+
"typescript": "^4.8.4"
|
|
23
24
|
},
|
|
24
25
|
"dependencies": {
|
|
25
26
|
"-": "^0.0.1",
|
|
26
27
|
"@types/chai": "^4.3.3",
|
|
27
|
-
"@types/mocha": "^
|
|
28
|
+
"@types/mocha": "^10.0.0",
|
|
28
29
|
"@types/pako": "^2.0.0",
|
|
29
30
|
"chai": "^4.3.6",
|
|
30
|
-
"commander": "^9.4.
|
|
31
|
-
"cry-crm-logic": "^
|
|
32
|
-
"cry-
|
|
33
|
-
"
|
|
31
|
+
"commander": "^9.4.1",
|
|
32
|
+
"cry-crm-logic": "^3.0.10",
|
|
33
|
+
"cry-ebus2": "^3.1.7",
|
|
34
|
+
"cry-helpers": "^2.1.71",
|
|
35
|
+
"dotenv": "^16.0.3",
|
|
34
36
|
"mocha": "^10.0.0",
|
|
35
37
|
"notepack.io": "^3.0.1",
|
|
36
38
|
"pako": "^2.0.4",
|
package/src/clientNonBlocking.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
2
|
import { Log, serialize } from "cry-helpers"
|
|
3
3
|
import { Request } from "zeromq"
|
|
4
4
|
import { EbusConfiguration } from "./EbusConfiguration.js"
|
|
@@ -8,8 +8,8 @@ import { Header, Message } from "./types.js"
|
|
|
8
8
|
import { pack, unpack } from "./serialize.js"
|
|
9
9
|
import { EbusRejectError } from "./EbusReject.js"
|
|
10
10
|
import { EbusUnpackedResult } from "./EbusUnpackedResult.js"
|
|
11
|
-
import DeferredPromise from "cry-helpers/dist/defferedpromise.js"
|
|
12
11
|
import { EbusClientEvents } from "./EbusClientEvents.js"
|
|
12
|
+
import DeferredPromise from "./deferredPromise.js"
|
|
13
13
|
import { TypedEmitter } from 'tiny-typed-emitter';
|
|
14
14
|
|
|
15
15
|
const prefixes = ["EBUS_CLIENT", "EBUS"]
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A new instance of deferred is constructed by calling `new DeferredPromse<T>()`.
|
|
3
|
+
* The purpose of the deferred object is to expose the associated Promise
|
|
4
|
+
* instance APIs that can be used for signaling the successful
|
|
5
|
+
* or unsuccessful completion, as well as the state of the task.
|
|
6
|
+
* @export
|
|
7
|
+
* @class DeferredPromise
|
|
8
|
+
* @implements {Promise<T>}
|
|
9
|
+
* @template T
|
|
10
|
+
* @example
|
|
11
|
+
* const deferred = new DeferredPromse<string>();
|
|
12
|
+
* console.log(deferred.state); // 'pending'
|
|
13
|
+
*
|
|
14
|
+
* deferred
|
|
15
|
+
* .then(str => console.log(str))
|
|
16
|
+
* .catch(err => console.error(err));
|
|
17
|
+
*
|
|
18
|
+
* deferred.resolve('Foo');
|
|
19
|
+
* console.log(deferred.state); // 'fulfilled'
|
|
20
|
+
* // deferred.reject('Bar');
|
|
21
|
+
*/
|
|
22
|
+
export default class DeferredPromise<T> implements Promise<T> {
|
|
23
|
+
[Symbol.toStringTag]: 'Promise';
|
|
24
|
+
|
|
25
|
+
private _promise: Promise<T>;
|
|
26
|
+
private _resolve: ((value?: T | PromiseLike<T>) => void) | undefined;
|
|
27
|
+
private _reject: ((reason?: any) => void) | undefined
|
|
28
|
+
private _state: 'pending' | 'fulfilled' | 'rejected' = 'pending';
|
|
29
|
+
|
|
30
|
+
public get state(): 'pending' | 'fulfilled' | 'rejected' {
|
|
31
|
+
return this._state;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
constructor() {
|
|
35
|
+
this._promise = new Promise<T>((resolve, reject) => {
|
|
36
|
+
this._resolve = resolve as any;
|
|
37
|
+
this._reject = reject;
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public finally(onfinally?: (() => void) | null): Promise<T> {
|
|
42
|
+
return this._promise.finally(onfinally);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
public then<TResult1, TResult2>(
|
|
46
|
+
onfulfilled?: (value: T) => TResult1 | PromiseLike<TResult1>,
|
|
47
|
+
onrejected?: (reason: any) => TResult2 | PromiseLike<TResult2>)
|
|
48
|
+
: Promise<TResult1 | TResult2> {
|
|
49
|
+
return this._promise.then(onfulfilled, onrejected);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
public catch<TResult>(onrejected?: (reason: any) => TResult | PromiseLike<TResult>): Promise<T | TResult> {
|
|
53
|
+
return this._promise.catch(onrejected);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
public resolve(value?: T | PromiseLike<T>): void {
|
|
57
|
+
if (this._resolve === undefined) throw new Error("Promise.resolve is undefined")
|
|
58
|
+
this._resolve(value);
|
|
59
|
+
this._state = 'fulfilled';
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public reject(reason?: any): void {
|
|
63
|
+
if (this._reject === undefined) throw new Error("Promise.resolve is undefined")
|
|
64
|
+
this._reject(reason);
|
|
65
|
+
this._state = 'rejected';
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/run/sub.ts
CHANGED
|
@@ -86,7 +86,7 @@ async function messageEvents() {
|
|
|
86
86
|
sub.on("message", ([channel, message]) => { console.log(channel, message) })
|
|
87
87
|
|
|
88
88
|
let stxt = "";
|
|
89
|
-
if (!myProgram.subscribe
|
|
89
|
+
if (!myProgram.subscribe?.length) {
|
|
90
90
|
|
|
91
91
|
await sub.subscribe("");
|
|
92
92
|
stxt = "on all channels";
|
package/src/sub.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Log } from "cry-helpers"
|
|
2
|
-
import { unpack } from "cry-helpers/dist/serialize.js"
|
|
3
2
|
import { TypedEmitter } from "tiny-typed-emitter"
|
|
4
3
|
import { Subscriber } from "zeromq"
|
|
5
4
|
import { EbusConfiguration } from "./EbusConfiguration.js"
|
|
6
5
|
import { loadConfiguration } from "./loadConfiguration.js"
|
|
6
|
+
import { unpack } from "./serialize.js"
|
|
7
7
|
|
|
8
8
|
const prefixes = ["EBUS_SUB", "EBUS"]
|
|
9
9
|
const log = new Log(prefixes)
|
|
@@ -62,7 +62,7 @@ export class Sub extends TypedEmitter<EbusSubscriptionEvent> {
|
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
private processMessage(messagePacked: Buffer, channel: Buffer) {
|
|
65
|
-
let message = unpack(messagePacked)
|
|
65
|
+
let message = unpack(messagePacked, { })
|
|
66
66
|
log.debug(`sub message received on ${channel}`, message)
|
|
67
67
|
this.emit("message", [channel.toString(), message])
|
|
68
68
|
if (channel.toString() === "ebus/stop") {
|
package/src/worker.ts
CHANGED
|
@@ -131,8 +131,7 @@ export class Worker {
|
|
|
131
131
|
|
|
132
132
|
|
|
133
133
|
} catch (err) {
|
|
134
|
-
console.error(`error in worker for '${this.service}'
|
|
135
|
-
console.error(err)
|
|
134
|
+
console.error(`error in worker for '${this.service}'`, err)
|
|
136
135
|
return
|
|
137
136
|
}
|
|
138
137
|
|
|
@@ -165,8 +164,7 @@ export class Worker {
|
|
|
165
164
|
// to be implemented at the actual worker
|
|
166
165
|
public async onError(err:any, req: any, opts: any)
|
|
167
166
|
{
|
|
168
|
-
console.log('worker/onError - should override');
|
|
169
|
-
|
|
167
|
+
console.log('worker/onError - should override', err?.message||err, req);
|
|
170
168
|
}
|
|
171
169
|
|
|
172
170
|
private async processRequest(reqId: Buffer, optBuff: Buffer, type: Buffer, req: Buffer, client: Buffer) {
|
|
@@ -187,8 +185,6 @@ export class Worker {
|
|
|
187
185
|
rep = await Promise.race(promises)
|
|
188
186
|
if (rep instanceof EbusRejectError && rep.reason === "timeout") {
|
|
189
187
|
log.warn(`request expired at worker for '${this.service}' after ${timeout} ms with opts ${serialize.pack(opts)}`)
|
|
190
|
-
console.log('opts',opts);
|
|
191
|
-
|
|
192
188
|
log.warn(unpack(req, opts))
|
|
193
189
|
responseMessageType = Message.Timeout
|
|
194
190
|
this.onError("timeout", unpack(req, opts), opts);
|
|
@@ -237,8 +233,7 @@ export class Worker {
|
|
|
237
233
|
pack(data, opts),
|
|
238
234
|
])
|
|
239
235
|
} catch (err) {
|
|
240
|
-
console.error(`unable to send reply for ${this.configuration.address}
|
|
241
|
-
console.error(err)
|
|
236
|
+
console.error(`unable to send reply for ${this.configuration.address}`, err)
|
|
242
237
|
throw err
|
|
243
238
|
}
|
|
244
239
|
}
|
package/tsconfig.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/* Basic Options */
|
|
6
6
|
// "incremental": true, /* Enable incremental compilation */
|
|
7
7
|
"target": "ES2018" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
|
|
8
|
-
"module": "
|
|
8
|
+
"module": "NodeNext" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
|
|
9
9
|
"lib": ["es2018", "ES2018.AsyncIterable"] /* Specify library files to be included in the compilation. */,
|
|
10
10
|
//"allowJs": true, /* Allow javascript files to be compiled. */
|
|
11
11
|
// "checkJs": true, /* Report errors in .js files. */
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"strictNullChecks": true /* Enable strict null checks. */,
|
|
31
31
|
"strictFunctionTypes": true /* Enable strict checking of function types. */,
|
|
32
32
|
"strictBindCallApply": true /* Enable strict 'bind', 'call', and 'apply' methods on functions. */,
|
|
33
|
-
"strictPropertyInitialization":
|
|
33
|
+
"strictPropertyInitialization": false /* Enable strict checking of property initialization in classes. */,
|
|
34
34
|
"noImplicitThis": true /* Raise error on 'this' expressions with an implied 'any' type. */,
|
|
35
35
|
"alwaysStrict": true /* Parse in strict mode and emit "use strict" for each source file. */,
|
|
36
36
|
|