Merge pull request #164 from pioardi/benchmark
[poolifier.git] / src / pools / abstract-pool.ts
index f6ed280cc3bbcf39b6a4aed1faa37603bf17786d..2ffd292afab9a0b540826820935b4a0febd34057 100644 (file)
@@ -220,8 +220,10 @@ export abstract class AbstractPool<
    */
   protected chooseWorker (): Worker {
     const chosenWorker = this.workers[this.nextWorkerIndex]
-    this.nextWorkerIndex++
-    this.nextWorkerIndex %= this.workers.length
+    this.nextWorkerIndex =
+      this.workers.length - 1 === this.nextWorkerIndex
+        ? 0
+        : this.nextWorkerIndex + 1
     return chosenWorker
   }
 
@@ -236,15 +238,13 @@ export abstract class AbstractPool<
     message: MessageValue<Data>
   ): void
 
-  protected abstract registerWorkerMessageListener (
-    port: Worker,
-    listener: (message: MessageValue<Response>) => void
-  ): void
+  protected abstract registerWorkerMessageListener<
+    Message extends Data | Response
+  > (worker: Worker, listener: (message: MessageValue<Message>) => void): void
 
-  protected abstract unregisterWorkerMessageListener (
-    port: Worker,
-    listener: (message: MessageValue<Response>) => void
-  ): void
+  protected abstract unregisterWorkerMessageListener<
+    Message extends Data | Response
+  > (worker: Worker, listener: (message: MessageValue<Message>) => void): void
 
   protected internalExecute (
     worker: Worker,