KeyedPool.ts overview
Since v2.0.0
Exports Grouped by Category
combinators
get
Retrieves an item from the pool belonging to the given key in a scoped effect. Note that if acquisition fails, then the returned effect will fail for that same reason. Retrying a failed acquisition attempt will repeat the acquisition attempt.
Signature
declare const get: {
<K>(key: K): <A, E>(self: KeyedPool<K, A, E>) => Effect.Effect<A, E, Scope.Scope>
<K, A, E>(self: KeyedPool<K, A, E>, key: K): Effect.Effect<A, E, Scope.Scope>
}
Since v2.0.0
invalidate
Invalidates the specified item. This will cause the pool to eventually reallocate the item, although this reallocation may occur lazily rather than eagerly.
Signature
declare const invalidate: {
<A>(item: A): <K, E>(self: KeyedPool<K, A, E>) => Effect.Effect<void>
<K, A, E>(self: KeyedPool<K, A, E>, item: A): Effect.Effect<void>
}
Since v2.0.0
constructors
make
Makes a new pool of the specified fixed size. The pool is returned in a Scope
, which governs the lifetime of the pool. When the pool is shutdown because the Scope
is closed, the individual items allocated by the pool will be released in some unspecified order.
Signature
declare const make: <K, A, E, R>(options: {
readonly acquire: (key: K) => Effect.Effect<A, E, R>
readonly size: number
}) => Effect.Effect<KeyedPool<K, A, E>, never, Scope.Scope | R>
Since v2.0.0
makeWith
Makes a new pool of the specified fixed size. The pool is returned in a Scope
, which governs the lifetime of the pool. When the pool is shutdown because the Scope
is closed, the individual items allocated by the pool will be released in some unspecified order.
The size of the underlying pools can be configured per key.
Signature
declare const makeWith: <K, A, E, R>(options: {
readonly acquire: (key: K) => Effect.Effect<A, E, R>
readonly size: (key: K) => number
}) => Effect.Effect<KeyedPool<K, A, E>, never, Scope.Scope | R>
Since v2.0.0
makeWithTTL
Makes a new pool with the specified minimum and maximum sizes and time to live before a pool whose excess items are not being used will be shrunk down to the minimum size. The pool is returned in a Scope
, which governs the lifetime of the pool. When the pool is shutdown because the Scope
is used, the individual items allocated by the pool will be released in some unspecified order.
The size of the underlying pools can be configured per key.
Signature
declare const makeWithTTL: <K, A, E, R>(options: {
readonly acquire: (key: K) => Effect.Effect<A, E, R>
readonly min: (key: K) => number
readonly max: (key: K) => number
readonly timeToLive: Duration.DurationInput
}) => Effect.Effect<KeyedPool<K, A, E>, never, Scope.Scope | R>
Since v2.0.0
makeWithTTLBy
Makes a new pool with the specified minimum and maximum sizes and time to live before a pool whose excess items are not being used will be shrunk down to the minimum size. The pool is returned in a Scope
, which governs the lifetime of the pool. When the pool is shutdown because the Scope
is used, the individual items allocated by the pool will be released in some unspecified order.
The size of the underlying pools can be configured per key.
Signature
declare const makeWithTTLBy: <K, A, E, R>(options: {
readonly acquire: (key: K) => Effect.Effect<A, E, R>
readonly min: (key: K) => number
readonly max: (key: K) => number
readonly timeToLive: (key: K) => Duration.DurationInput
}) => Effect.Effect<KeyedPool<K, A, E>, never, Scope.Scope | R>
Since v2.0.0
models
KeyedPool (interface)
A KeyedPool<K, A, E>
is a pool of Pool
s of items of type A
. Each pool in the KeyedPool
is associated with a key of type K
.
Signature
export interface KeyedPool<in K, in out A, out E = never> extends KeyedPool.Variance<K, A, E>, Pipeable {
/**
* Retrieves an item from the pool belonging to the given key in a scoped
* effect. Note that if acquisition fails, then the returned effect will fail
* for that same reason. Retrying a failed acquisition attempt will repeat the
* acquisition attempt.
*/
get(key: K): Effect.Effect<A, E, Scope.Scope>
/**
* Invalidates the specified item. This will cause the pool to eventually
* reallocate the item, although this reallocation may occur lazily rather
* than eagerly.
*/
invalidate(item: A): Effect.Effect<void>
}
Since v2.0.0
symbols
KeyedPoolTypeId
Signature
declare const KeyedPoolTypeId: unique symbol
Since v2.0.0
KeyedPoolTypeId (type alias)
Signature
type KeyedPoolTypeId = typeof KeyedPoolTypeId
Since v2.0.0
utils
KeyedPool (namespace)
Since v2.0.0
Variance (interface)
Signature
export interface Variance<in K, in out A, out E> {
readonly [KeyedPoolTypeId]: {
readonly _K: Types.Contravariant<K>
readonly _A: Types.Invariant<A>
readonly _E: Types.Covariant<E>
}
}
Since v2.0.0