Merge dependabot/npm_and_yarn/examples/typescript/websocket-server-pool/ws-hybrid...
[poolifier.git] / examples / typescript / http-server-pool / express-worker_threads / src / worker.ts
... / ...
CommitLineData
1import { ThreadWorker } from 'poolifier'
2
3import type { BodyPayload, WorkerData, WorkerResponse } from './types.js'
4
5class RequestHandlerWorker<
6 Data extends WorkerData<BodyPayload>,
7 Response extends WorkerResponse<BodyPayload>
8> extends ThreadWorker<Data, Response> {
9 private static readonly factorial: (n: number | bigint) => bigint = n => {
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
19 }
20 }
21
22 public constructor () {
23 super({
24 echo: (workerData?: Data) => {
25 return workerData as unknown as Response
26 },
27 factorial: (workerData?: Data) => {
28 return {
29 body: {
30 number: RequestHandlerWorker.factorial(
31 workerData!.body.number!
32 ).toString()
33 }
34 } as unknown as Response
35 }
36 })
37 }
38}
39
40export const requestHandlerWorker = new RequestHandlerWorker<
41WorkerData<BodyPayload>,
42WorkerResponse<BodyPayload>
43>()