-// eslint-disable-next-line @typescript-eslint/no-explicit-any
-export class ClusterWorker<Data = any, Response = any> extends AbstractWorker<
- Worker,
- Data,
- Response
-> {
- public constructor (fn: (data: Data) => Response, opts: WorkerOptions = {}) {
- super('worker-cluster-pool:pioardi', isMaster, fn, opts)
-
- worker.on('message', (value: MessageValue<Data>) => {
- if (value?.data && value.id) {
- // here you will receive messages
- // console.log('This is the main worker ' + isMain)
- if (this.async) {
- this.runInAsyncScope(this.runAsync.bind(this), this, fn, value)
- } else {
- this.runInAsyncScope(this.run.bind(this), this, fn, value)
- }
- } else if (value.kill) {
- // here is time to kill this worker, just clearing the interval
- if (this.interval) clearInterval(this.interval)
- this.emitDestroy()
- }
- })
+export class ClusterWorker<
+ Data = unknown,
+ Response = unknown
+> extends AbstractWorker<Worker, Data, Response> {
+ /**
+ * Constructs a new poolifier cluster worker.
+ *
+ * @param taskFunctions - Task function(s) processed by the worker when the pool's `execution` function is invoked.
+ * @param opts - Options for the worker.
+ */
+ public constructor (
+ taskFunctions: TaskFunction<Data, Response> | TaskFunctions<Data, Response>,
+ opts: WorkerOptions = {}
+ ) {
+ super(cluster.isPrimary, cluster.worker, taskFunctions, opts)