repositories
/
poolifier.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
docs: update changelog entries
[poolifier.git]
/
src
/
pools
/
pool.ts
diff --git
a/src/pools/pool.ts
b/src/pools/pool.ts
index 2ce311f710e0d7a809b5b219cd7309c9354d15cf..3c660031fb90b233bb93125331c81e53200b6803 100644
(file)
--- a/
src/pools/pool.ts
+++ b/
src/pools/pool.ts
@@
-1,17
+1,33
@@
-import EventEmitter from 'events'
+import EventEmitter from '
node:
events'
import type {
ErrorHandler,
ExitHandler,
MessageHandler,
OnlineHandler
import type {
ErrorHandler,
ExitHandler,
MessageHandler,
OnlineHandler
-} from './pool-worker'
-import type { WorkerChoiceStrategy } from './selection-strategies/selection-strategies-types'
+} from './worker'
+import type {
+ WorkerChoiceStrategy,
+ WorkerChoiceStrategyOptions
+} from './selection-strategies/selection-strategies-types'
/**
* Pool events emitter.
*/
export class PoolEmitter extends EventEmitter {}
/**
* Pool events emitter.
*/
export class PoolEmitter extends EventEmitter {}
+/**
+ * Enumeration of pool events.
+ */
+export const PoolEvents = Object.freeze({
+ full: 'full',
+ busy: 'busy'
+} as const)
+
+/**
+ * Pool event.
+ */
+export type PoolEvent = keyof typeof PoolEvents
+
/**
* Options for a poolifier pool.
*/
/**
* Options for a poolifier pool.
*/
@@
-36,19
+52,30
@@
export interface PoolOptions<Worker> {
* The worker choice strategy to use in this pool.
*/
workerChoiceStrategy?: WorkerChoiceStrategy
* The worker choice strategy to use in this pool.
*/
workerChoiceStrategy?: WorkerChoiceStrategy
+ /**
+ * The worker choice strategy options.
+ */
+ workerChoiceStrategyOptions?: WorkerChoiceStrategyOptions
/**
* Pool events emission.
*
/**
* Pool events emission.
*
- * @default true
+ * @default
Value
true
*/
enableEvents?: boolean
*/
enableEvents?: boolean
+ /**
+ * Pool worker tasks queue.
+ *
+ * @experimental
+ * @defaultValue false
+ */
+ enableTasksQueue?: boolean
}
/**
* Contract definition for a poolifier pool.
*
}
/**
* Contract definition for a poolifier pool.
*
- * @t
emplate Data
Type of data sent to the worker. This can only be serializable data.
- * @t
emplate Response
Type of response of execution. This can only be serializable data.
+ * @t
ypeParam Data -
Type of data sent to the worker. This can only be serializable data.
+ * @t
ypeParam Response -
Type of response of execution. This can only be serializable data.
*/
export interface IPool<Data = unknown, Response = unknown> {
/**
*/
export interface IPool<Data = unknown, Response = unknown> {
/**
@@
-56,13
+83,14
@@
export interface IPool<Data = unknown, Response = unknown> {
*
* Events that can currently be listened to:
*
*
* Events that can currently be listened to:
*
- * - `'busy'`
+ * - `'full'`: Emitted when the pool is dynamic and full.
+ * - `'busy'`: Emitted when the pool is busy.
*/
readonly emitter?: PoolEmitter
/**
* Performs the task specified in the constructor with the data parameter.
*
*/
readonly emitter?: PoolEmitter
/**
* Performs the task specified in the constructor with the data parameter.
*
- * @param data The input for the specified task. This can only be serializable data.
+ * @param data
-
The input for the specified task. This can only be serializable data.
* @returns Promise that will be resolved when the task is successfully completed.
*/
execute: (data: Data) => Promise<Response>
* @returns Promise that will be resolved when the task is successfully completed.
*/
execute: (data: Data) => Promise<Response>
@@
-73,7
+101,7
@@
export interface IPool<Data = unknown, Response = unknown> {
/**
* Sets the worker choice strategy in this pool.
*
/**
* Sets the worker choice strategy in this pool.
*
- * @param workerChoiceStrategy The worker choice strategy.
+ * @param workerChoiceStrategy
-
The worker choice strategy.
*/
setWorkerChoiceStrategy: (workerChoiceStrategy: WorkerChoiceStrategy) => void
}
*/
setWorkerChoiceStrategy: (workerChoiceStrategy: WorkerChoiceStrategy) => void
}