DefaultPool

abstract expect class DefaultPool<T : Any> : ObjectPool<T>

Default object pool implementation.

Constructors

<init>

DefaultPool(capacity: Int)

Default object pool implementation.

Properties

capacity

val capacity: Int

Pool capacity.

Functions

borrow

fun borrow(): T

borrow an instance. Pool can recycle an old instance or create a new one

clearInstance

open fun clearInstance(instance: T): T

Clear instance’s state before reuse: reset pointers, counters and so on

dispose

fun dispose(): Unit

Dispose the whole pool. None of borrowed objects could be used after the pool gets disposed otherwise it can result in undefined behaviour

disposeInstance

open fun disposeInstance(instance: T): Unit

Dispose instance and release it’s resources

produceInstance

abstract fun produceInstance(): T

Creates a new instance of T

recycle

fun recycle(instance: T): Unit

Recycle an instance. Should be recycled what was borrowed before otherwise could fail

validateInstance

open fun validateInstance(instance: T): Unit

Validate instance of T. Could verify that the object has been borrowed from this pool

Inherited Functions

close

open fun close(): Unit

Does pool dispose

Extension Functions

useBorrowed

fun <T : Any, R> ObjectPool<T>.useBorrowed(
    block: (T) -> R
): R

Borrows and instance of T from the pool, invokes block with it and finally recycles it

useInstance

fun <T : Any, R> ObjectPool<T>.useInstance(
    block: (T) -> R
): R

Borrows and instance of T from the pool, invokes block with it and finally recycles it

Inheritors

ByteBufferPool

class ByteBufferPool : DefaultPool<ByteBuffer>

ByteBufferPool

class ByteBufferPool : DefaultPool<ByteBuffer>