public static interface ConnectionProvider.AllocationStrategy<A extends ConnectionProvider.AllocationStrategy<A>>
Modifier and Type | Method and Description |
---|---|
A |
copy()
Returns a deep copy of this instance.
|
int |
estimatePermitCount()
Best-effort peek at the state of the strategy which indicates roughly how many more connections can currently be
allocated.
|
int |
getPermits(int desired)
Try to get the permission to allocate a
desired positive number of new connections. |
int |
permitGranted()
Returns the best estimate of the number of permits currently granted, between 0 and
Integer.MAX_VALUE |
int |
permitMaximum()
Returns the maximum number of permits this strategy can grant in total, or
Integer.MAX_VALUE for unbounded |
int |
permitMinimum()
Return the minimum number of permits this strategy tries to maintain granted
(reflecting a minimal size for the pool), or
0 for scale-to-zero. |
void |
returnPermits(int returned)
Update the strategy to indicate that N connections were discarded, potentially leaving space
for N new ones to be allocated.
|
A copy()
int estimatePermitCount()
getPermits(int)
for an atomic permission.int getPermits(int desired)
desired
positive number of new connections. Returns the permissible
number of connections which MUST be created (otherwise the internal live counter of the strategy might be off).
This permissible number might be zero, and it can also be a greater number than desired
.
Once a connection is discarded from the pool, it must update the strategy using returnPermits(int)
(which can happen in batches or with value 1).desired
- the desired number of new connectionsdesired
int permitGranted()
Integer.MAX_VALUE
Integer.MAX_VALUE
int permitMinimum()
0
for scale-to-zero.0
int permitMaximum()
Integer.MAX_VALUE
for unboundedInteger.MAX_VALUE
for unboundedvoid returnPermits(int returned)
Some strategy MIGHT throw an IllegalArgumentException
if it can be determined the number of returned permits
is not consistent with the strategy's limits and delivered permits.