JS API Reference

Class: ResourceRentalPool

resource-rental/resource-rental-pool.ResourceRentalPool

Pool of resource rentals that can be borrowed, released or destroyed.

Table of contents

Constructors

Properties

Methods

Constructors

constructor

new ResourceRentalPool(options): ResourceRentalPool

Parameters

NameType
optionsResourceRentalPoolOptions & ResourceRentalPoolDependencies

Returns

ResourceRentalPool

Defined in

src/resource-rental/resource-rental-pool.ts:96

Properties

events

Readonly events: EventEmitter<ResourceRentalPoolEvents, any>

Defined in

src/resource-rental/resource-rental-pool.ts:59

Methods

acquire

acquire(signalOrTimeout?): Promise<ResourceRental>

Borrow a resource rental from the pool. If there is no valid resource rental a new one will be created.

Parameters

NameTypeDescription
signalOrTimeout?number | AbortSignalthe timeout in milliseconds or an AbortSignal that will be used to cancel the rental request

Returns

Promise<ResourceRental>

Defined in

src/resource-rental/resource-rental-pool.ts:216


release

release(resourceRental): Promise<void>

Parameters

NameType
resourceRentalResourceRental

Returns

Promise<void>

Defined in

src/resource-rental/resource-rental-pool.ts:255


destroy

destroy(resourceRental): Promise<void>

Parameters

NameType
resourceRentalResourceRental

Returns

Promise<void>

Defined in

src/resource-rental/resource-rental-pool.ts:272


drainAndClear

drainAndClear(): Promise<void>

Sets the pool into draining mode and then clears it

When set to drain mode, no new acquires will be possible. At the same time, all agreements in the pool will be terminated with the Providers.

Returns

Promise<void>

Resolves when all agreements are terminated

Defined in

src/resource-rental/resource-rental-pool.ts:327


getSize

getSize(): number

Total size (available + borrowed)

Returns

number

Defined in

src/resource-rental/resource-rental-pool.ts:340


getAvailableSize

getAvailableSize(): number

Available size (how many resource rental are ready to be borrowed)

Returns

number

Defined in

src/resource-rental/resource-rental-pool.ts:347


getBorrowedSize

getBorrowedSize(): number

Borrowed size (how many resource rental are currently out of the pool)

Returns

number

Defined in

src/resource-rental/resource-rental-pool.ts:354


ready

ready(timeoutMs?): Promise<void>

Wait till the pool is ready to use (min number of items in pool are usable). If an error occurs while creating new resource rentals, it will be retried until the pool is ready (potentially indefinitely). To stop this process if it fails to reach the desired state in a given time, you can pass either a timeout in milliseconds or an AbortSignal.

Parameters

NameType
timeoutMs?number

Returns

Promise<void>

Example

await pool.ready(10_000); // If the pool is not ready in 10 seconds, an error will be thrown

Example

await pool.ready(AbortSignal.timeout(10_000)); // If the pool is not ready in 10 seconds, an error will be thrown

Defined in

src/resource-rental/resource-rental-pool.ts:373

ready(abortSignal?): Promise<void>

Parameters

NameType
abortSignal?AbortSignal

Returns

Promise<void>

Defined in

src/resource-rental/resource-rental-pool.ts:374


withRental

withRental<T>(callback, signalOrTimeout?): Promise<T>

Acquire a resource rental from the pool and release it after the callback is done

Type parameters

Name
T

Parameters

NameTypeDescription
callback(rental: ResourceRental) => Promise<T>a function that takes a rental object as its argument. The rental is automatically released after the callback is executed, regardless of whether it completes successfully or throws an error.
signalOrTimeout?number | AbortSignalthe timeout in milliseconds or an AbortSignal that will be used to cancel the rental request

Returns

Promise<T>

Example

const result = await pool.withRental(async (rental) => {
 // Do something with the rented resources
 return result;
 // pool.release(rental) is called automatically
 // even if an error is thrown in the callback
});

Defined in

src/resource-rental/resource-rental-pool.ts:428

Was this helpful?