abstract class Pool implements PoolInterface

Manage reusable connections with explicit ownership and terminal teardown.

Properties

protected Channel $channel
protected PoolOptionInterface $option
protected array<int, true> $managedConnections
protected array<int, true> $borrowedConnections
protected int $creating
protected bool $closed
protected FrequencyInterface|LowFrequencyInterface|null $frequency

Methods

__construct(Container $container, string $name, array $config = [])

Create a connection pool.

string
getName()

Get the pool name.

get()

Get a connection from the pool.

void
release(ConnectionInterface $connection)

Release a connection back to the pool.

void
discard(ConnectionInterface $connection)

Discard a borrowed connection from the pool.

void
flush()

Close idle connections while the total managed count exceeds the configured minimum.

void
checkIdleConnection()

Check one idle connection and discard it when unhealthy.

void
close()

Close the pool and destroy every idle connection.

bool
isClosed()

Determine if the pool is closed.

int
getCurrentConnections()

Get the current number of connections managed by the pool.

getOption()

Get the pool configuration options.

int
getConnectionsInChannel()

Get the number of connections currently available in the pool.

void
initOption(array $options = [])

Initialize pool options from configuration.

createConnection()

Create a new connection for the pool.

popIdleConnection()

Pop and validate one idle connection.

void
requeueConnection(ConnectionInterface $connection)

Return an idle connection without changing its activity timestamps.

void
destroyConnection(ConnectionInterface $connection)

Destroy a managed connection and release its capacity.

void
report(Throwable|string $error)

Report a pool maintenance or cleanup failure without throwing.

getLogger()

Get the logger instance if available.

int
nanoseconds(float $seconds)

Convert seconds to nanoseconds without overflowing integer arithmetic.

int
deadline(float $seconds)

Build a monotonic deadline without overflowing at long durations or uptimes.

Details

at line 41
__construct(Container $container, string $name, array $config = [])

Create a connection pool.

Parameters

Container $container
string $name
array $config

at line 54
string getName()

Get the pool name.

Return Value

string

at line 62
ConnectionInterface get()

Get a connection from the pool.

Return Value

ConnectionInterface

at line 92
void release(ConnectionInterface $connection)

Release a connection back to the pool.

Parameters

ConnectionInterface $connection

Return Value

void

at line 109
void discard(ConnectionInterface $connection)

Discard a borrowed connection from the pool.

Parameters

ConnectionInterface $connection

Return Value

void

at line 118
void flush()

Close idle connections while the total managed count exceeds the configured minimum.

Return Value

void

at line 133
void checkIdleConnection()

Check one idle connection and discard it when unhealthy.

Return Value

void

at line 163
void close()

Close the pool and destroy every idle connection.

Idempotent. Connections borrowed when closure begins are destroyed on release, and factories completing after closure destroy their orphan.

Return Value

void

at line 189
bool isClosed()

Determine if the pool is closed.

Return Value

bool

at line 197
int getCurrentConnections()

Get the current number of connections managed by the pool.

Return Value

int

at line 205
PoolOptionInterface getOption()

Get the pool configuration options.

Return Value

PoolOptionInterface

at line 213
int getConnectionsInChannel()

Get the number of connections currently available in the pool.

Return Value

int

at line 221
protected void initOption(array $options = [])

Initialize pool options from configuration.

Parameters

array $options

Return Value

void

at line 262
abstract protected ConnectionInterface createConnection()

Create a new connection for the pool.

Return Value

ConnectionInterface

at line 267
protected ConnectionInterface|false popIdleConnection()

Pop and validate one idle connection.

Return Value

ConnectionInterface|false

at line 291
protected void requeueConnection(ConnectionInterface $connection)

Return an idle connection without changing its activity timestamps.

Parameters

ConnectionInterface $connection

Return Value

void

at line 309
protected void destroyConnection(ConnectionInterface $connection)

Destroy a managed connection and release its capacity.

Parameters

ConnectionInterface $connection

Return Value

void

at line 333
protected void report(Throwable|string $error)

Report a pool maintenance or cleanup failure without throwing.

Parameters

Throwable|string $error

Return Value

void

at line 344
protected StdoutLoggerInterface|null getLogger()

Get the logger instance if available.

Return Value

StdoutLoggerInterface|null

at line 431
protected int nanoseconds(float $seconds)

Convert seconds to nanoseconds without overflowing integer arithmetic.

Parameters

float $seconds

Return Value

int

at line 441
protected int deadline(float $seconds)

Build a monotonic deadline without overflowing at long durations or uptimes.

Parameters

float $seconds

Return Value

int