repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:poolifier/poolifier
[poolifier.git]
/
src
/
pools
/
abstract-pool.ts
diff --git
a/src/pools/abstract-pool.ts
b/src/pools/abstract-pool.ts
index 99f65a24a0ee85f606ab7937653cf0b641472bc8..9f7813e74cd7bd2579081ef9fd83facef0c59fdf 100644
(file)
--- a/
src/pools/abstract-pool.ts
+++ b/
src/pools/abstract-pool.ts
@@
-6,10
+6,14
@@
import {
median
} from '../utils'
import { KillBehaviors, isKillBehavior } from '../worker/worker-options'
median
} from '../utils'
import { KillBehaviors, isKillBehavior } from '../worker/worker-options'
-import { PoolEvents, type PoolOptions, type TasksQueueOptions } from './pool'
+import {
+ PoolEvents,
+ type IPool,
+ type PoolOptions,
+ type TasksQueueOptions,
+ PoolType
+} from './pool'
import { PoolEmitter } from './pool'
import { PoolEmitter } from './pool'
-import type { IPoolInternal } from './pool-internal'
-import { PoolType } from './pool-internal'
import type { IWorker, Task, TasksUsage, WorkerNode } from './worker'
import {
WorkerChoiceStrategies,
import type { IWorker, Task, TasksUsage, WorkerNode } from './worker'
import {
WorkerChoiceStrategies,
@@
-23,13
+27,13
@@
import { CircularArray } from '../circular-array'
*
* @typeParam Worker - Type of worker which manages this pool.
* @typeParam Data - Type of data sent to the worker. This can only be serializable data.
*
* @typeParam Worker - Type of worker which manages this pool.
* @typeParam Data - Type of data sent to the worker. This can only be serializable data.
- * @typeParam Response - Type of
response of execution
. This can only be serializable data.
+ * @typeParam Response - Type of
execution response
. This can only be serializable data.
*/
export abstract class AbstractPool<
Worker extends IWorker,
Data = unknown,
Response = unknown
*/
export abstract class AbstractPool<
Worker extends IWorker,
Data = unknown,
Response = unknown
-> implements IPool
Internal
<Worker, Data, Response> {
+> implements IPool<Worker, Data, Response> {
/** @inheritDoc */
public readonly workerNodes: Array<WorkerNode<Worker, Data>> = []
/** @inheritDoc */
public readonly workerNodes: Array<WorkerNode<Worker, Data>> = []
@@
-223,11
+227,19
@@
export abstract class AbstractPool<
)
}
)
}
- /** @inheritDoc */
- public abstract get full (): boolean
+ /**
+ * Whether the pool is full or not.
+ *
+ * The pool filling boolean status.
+ */
+ protected abstract get full (): boolean
- /** @inheritDoc */
- public abstract get busy (): boolean
+ /**
+ * Whether the pool is busy or not.
+ *
+ * The pool busyness boolean status.
+ */
+ protected abstract get busy (): boolean
protected internalBusy (): boolean {
return this.findFreeWorkerNodeKey() === -1
protected internalBusy (): boolean {
return this.findFreeWorkerNodeKey() === -1
@@
-249,7
+261,7
@@
export abstract class AbstractPool<
id: crypto.randomUUID()
}
const res = new Promise<Response>((resolve, reject) => {
id: crypto.randomUUID()
}
const res = new Promise<Response>((resolve, reject) => {
- this.promiseResponseMap.set(submittedTask.id, {
+ this.promiseResponseMap.set(submittedTask.id
as string
, {
resolve,
reject,
worker: workerNode.worker
resolve,
reject,
worker: workerNode.worker
@@
-258,10
+270,9
@@
export abstract class AbstractPool<
if (
this.opts.enableTasksQueue === true &&
(this.busy ||
if (
this.opts.enableTasksQueue === true &&
(this.busy ||
- this.workerNodes[workerNodeKey].tasksUsage.running >
+ this.workerNodes[workerNodeKey].tasksUsage.running >
=
((this.opts.tasksQueueOptions as TasksQueueOptions)
((this.opts.tasksQueueOptions as TasksQueueOptions)
- .concurrency as number) -
- 1)
+ .concurrency as number))
) {
this.enqueueTask(workerNodeKey, submittedTask)
} else {
) {
this.enqueueTask(workerNodeKey, submittedTask)
} else {