summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts')
-rw-r--r--packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts19
1 files changed, 17 insertions, 2 deletions
diff --git a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
index 6c9dfc569..d4d858330 100644
--- a/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
+++ b/packages/taler-wallet-core/src/crypto/workers/nodeThreadWorker.ts
@@ -21,6 +21,9 @@ import { CryptoWorkerFactory } from "./cryptoApi";
import { CryptoWorker } from "./cryptoWorker";
import os from "os";
import { CryptoImplementation } from "./cryptoImplementation";
+import { Logger } from "../../util/logging";
+
+const logger = new Logger("nodeThreadWorker.ts");
const f = __filename;
@@ -37,16 +40,22 @@ const workerCode = `
try {
tw = require("${f}");
} catch (e) {
- console.log("could not load from ${f}");
+ console.warn("could not load from ${f}");
}
if (!tw) {
try {
tw = require("taler-wallet-android");
} catch (e) {
- console.log("could not load taler-wallet-android either");
+ console.warn("could not load taler-wallet-android either");
throw e;
}
}
+ if (typeof tw.handleWorkerMessage !== "function") {
+ throw Error("module loaded for crypto worker lacks handleWorkerMessage");
+ }
+ if (typeof tw.handleWorkerError !== "function") {
+ throw Error("module loaded for crypto worker lacks handleWorkerError");
+ }
parentPort.on("message", tw.handleWorkerMessage);
parentPort.on("error", tw.handleWorkerError);
`;
@@ -138,6 +147,9 @@ class NodeThreadCryptoWorker implements CryptoWorker {
constructor() {
// eslint-disable-next-line @typescript-eslint/no-var-requires
const worker_threads = require("worker_threads");
+
+ logger.trace("starting node crypto worker");
+
this.nodeWorker = new worker_threads.Worker(workerCode, { eval: true });
this.nodeWorker.on("error", (err: Error) => {
console.error("error in node worker:", err);
@@ -145,6 +157,9 @@ class NodeThreadCryptoWorker implements CryptoWorker {
this.onerror(err);
}
});
+ this.nodeWorker.on("exit", (err) => {
+ logger.trace(`worker exited with code ${err}`);
+ });
this.nodeWorker.on("message", (v: any) => {
if (this.onmessage) {
this.onmessage(v);