extra-pool 0.1.3 → 0.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/lib/pool.d.ts +10 -9
- package/lib/pool.js +3 -0
- package/lib/pool.js.map +1 -1
- package/package.json +1 -1
- package/src/pool.ts +14 -10
package/README.md
CHANGED
package/lib/pool.d.ts
CHANGED
|
@@ -9,15 +9,16 @@ interface IPoolOptions<T> {
|
|
|
9
9
|
concurrencyPerInstance?: number;
|
|
10
10
|
}
|
|
11
11
|
export declare class Pool<T> {
|
|
12
|
-
private createInstance;
|
|
13
|
-
private destroyInstance?;
|
|
14
|
-
private fsm;
|
|
15
|
-
private waitingUsers;
|
|
16
|
-
private items;
|
|
17
|
-
private maxInstances;
|
|
18
|
-
private minInstances;
|
|
19
|
-
private idleTimeout;
|
|
20
|
-
private concurrencyPerInstance;
|
|
12
|
+
private readonly createInstance;
|
|
13
|
+
private readonly destroyInstance?;
|
|
14
|
+
private readonly fsm;
|
|
15
|
+
private readonly waitingUsers;
|
|
16
|
+
private readonly items;
|
|
17
|
+
private readonly maxInstances;
|
|
18
|
+
private readonly minInstances;
|
|
19
|
+
private readonly idleTimeout;
|
|
20
|
+
private readonly concurrencyPerInstance;
|
|
21
|
+
get capacity(): number;
|
|
21
22
|
get size(): number;
|
|
22
23
|
constructor(options: IPoolOptions<T>);
|
|
23
24
|
use<U>(fn: (instance: T) => Awaitable<U>): Promise<U>;
|
package/lib/pool.js
CHANGED
package/lib/pool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAChD,iDAAmD;AACnD,uDAA8C;AAC9C,yCAA8C;AAC9C,iDAAwC;AACxC,yDAAmD;AACnD,+CAAyC;AACzC,
|
|
1
|
+
{"version":3,"file":"pool.js","sourceRoot":"","sources":["../src/pool.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/pool.ts
CHANGED
|
@@ -5,7 +5,7 @@ import { FiniteStateMachine } from 'extra-fsm'
|
|
|
5
5
|
import { Deferred } from 'extra-promise'
|
|
6
6
|
import { toArray, filter } from 'iterable-operator'
|
|
7
7
|
import { setTimeout } from 'extra-timers'
|
|
8
|
-
import { Instance
|
|
8
|
+
import { Instance } from './instance'
|
|
9
9
|
|
|
10
10
|
interface IPoolOptions<T> {
|
|
11
11
|
create: () => Awaitable<T>
|
|
@@ -71,18 +71,22 @@ const poolSchema = {
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
export class Pool<T> {
|
|
74
|
-
private createInstance: () => Awaitable<T>
|
|
75
|
-
private destroyInstance?: (value: T) => Awaitable<void>
|
|
76
|
-
private fsm = new FiniteStateMachine<PoolState, PoolEvent>(
|
|
74
|
+
private readonly createInstance: () => Awaitable<T>
|
|
75
|
+
private readonly destroyInstance?: (value: T) => Awaitable<void>
|
|
76
|
+
private readonly fsm = new FiniteStateMachine<PoolState, PoolEvent>(
|
|
77
77
|
poolSchema
|
|
78
78
|
, PoolState.Running
|
|
79
79
|
)
|
|
80
|
-
private waitingUsers: Queue<Deferred<IPoolItem<T>>> = new Queue()
|
|
81
|
-
private items: Set<IPoolItem<T>> = new Set()
|
|
82
|
-
private maxInstances: number
|
|
83
|
-
private minInstances: number
|
|
84
|
-
private idleTimeout: number
|
|
85
|
-
private concurrencyPerInstance: number
|
|
80
|
+
private readonly waitingUsers: Queue<Deferred<IPoolItem<T>>> = new Queue()
|
|
81
|
+
private readonly items: Set<IPoolItem<T>> = new Set()
|
|
82
|
+
private readonly maxInstances: number
|
|
83
|
+
private readonly minInstances: number
|
|
84
|
+
private readonly idleTimeout: number
|
|
85
|
+
private readonly concurrencyPerInstance: number
|
|
86
|
+
|
|
87
|
+
get capacity(): number {
|
|
88
|
+
return this.maxInstances
|
|
89
|
+
}
|
|
86
90
|
|
|
87
91
|
get size(): number {
|
|
88
92
|
return this.items.size
|