|
1 | | -/** |
2 | | - * Node.js implementation of signature validation. |
3 | | - * Runs on the main thread (worker threads can be added later if needed). |
4 | | - */ |
| 1 | +import * as Comlink from 'comlink' |
| 2 | +import nodeEndpoint from 'comlink/dist/umd/node-adapter' |
| 3 | +import { Worker } from "worker_threads" |
5 | 4 | import { StreamMessage } from '../protocol/StreamMessage' |
6 | 5 | import { SignatureValidationContext } from './SignatureValidationContext' |
7 | | -import { SignatureValidationResult, validateSignatureData } from './signatureValidation' |
| 6 | +import { SignatureValidationWorkerApi } from './SignatureValidationWorker' |
| 7 | +import { SignatureValidationResult } from './signatureValidation' |
| 8 | +import { join } from 'path' |
8 | 9 |
|
9 | 10 | export default class ServerSignatureValidation implements SignatureValidationContext { |
10 | 11 |
|
11 | | - // eslint-disable-next-line class-methods-use-this |
| 12 | + private readonly worker: Worker |
| 13 | + private readonly workerApi: Comlink.Remote<SignatureValidationWorkerApi> |
| 14 | + constructor() { |
| 15 | + const isRunningFromDist = __dirname.includes('/dist/') |
| 16 | + const workerPath = isRunningFromDist |
| 17 | + ? join(__dirname, 'SignatureValidationWorker.js') |
| 18 | + : join(__dirname, '../../dist/src/signature/SignatureValidationWorker.js') |
| 19 | + this.worker = new Worker(workerPath) |
| 20 | + this.workerApi = Comlink.wrap<SignatureValidationWorkerApi>(nodeEndpoint(this.worker)) |
| 21 | + } |
| 22 | + |
12 | 23 | async validateSignature(message: StreamMessage): Promise<SignatureValidationResult> { |
13 | | - return validateSignatureData(message) |
| 24 | + console.log('validateSignature', message) |
| 25 | + return this.workerApi.validateSignature(message) |
14 | 26 | } |
15 | 27 |
|
16 | 28 | // eslint-disable-next-line class-methods-use-this |
|
0 commit comments