Files
the-jailor/wwwroot/core/namecards/workerLauncher.js

32 lines
986 B
JavaScript

import path from "path";
import { Worker } from 'worker_threads';
import {Logger} from "../logging/logger.js";
function launchWorker({templatePath, avatarURL, username}) {
return new Promise((resolve, reject) => {
const workerFile = path.resolve('./wwwroot/core/namecards/nameCardWorker.js');
const worker = new Worker(workerFile);
worker.postMessage({templatePath, avatarURL, username});
worker.on('message', (result) => {
resolve(result);
worker.terminate()
.catch(err => Logger.error("Unable to terminate worker", err.message));
});
worker.on('error', (err) => {
reject(err);
worker.terminate()
.catch(err => Logger.error("Unable to terminate worker", err.message));
});
worker.on('exit', (code) => {
if (code !== 0) reject(new Error(`Worker stopped with code ${code}`));
});
});
}
export {launchWorker}