32 lines
986 B
JavaScript
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}
|
|
|