refactor: code cleanups
[poolifier.git] / examples / typescript / websocket-server-pool / ws-worker_threads / src / worker.ts
CommitLineData
219d4044 1import { ThreadWorker } from 'poolifier'
ded253e2 2
80115618 3import type { DataPayload, WorkerData, WorkerResponse } from './types.js'
219d4044 4
219d4044
JB
5class RequestHandlerWorker<
6 Data extends WorkerData<DataPayload>,
7 Response extends WorkerResponse<DataPayload>
8> extends ThreadWorker<Data, Response> {
66f0c14c
JB
9 private static readonly factorial = (n: number | bigint): bigint => {
10 if (n === 0 || n === 1) {
11 return 1n
12 } else {
13 n = BigInt(n)
14 let factorial = 1n
15 for (let i = 1n; i <= n; i++) {
16 factorial *= i
17 }
18 return factorial
8538ea4c 19 }
8538ea4c
JB
20 }
21
219d4044
JB
22 public constructor () {
23 super({
24 echo: (workerData?: Data) => {
25 return workerData as unknown as Response
26 },
27 factorial: (workerData?: Data) => {
28 return {
8538ea4c 29 data: {
67f3f2d6 30 number: RequestHandlerWorker.factorial(workerData!.data.number!)
8538ea4c 31 }
219d4044
JB
32 } as unknown as Response
33 }
34 })
35 }
36}
37
38export const requestHandlerWorker = new RequestHandlerWorker<
39WorkerData<DataPayload>,
40WorkerResponse<DataPayload>
41>()