package com.nodeta.scalandra.pool
/**
* A type-safe interface used for pool implementations.
*
* @author Ville Lautanala
*/
trait Pool[T] extends java.io.Closeable {
def borrow() : T
def restore(t : T) : Unit
def invalidate(t : T) : Unit
def add() : Unit
def idle() : Int
def active() : Int
def clear() : Unit
def apply[R](f : T => R) = {
val item = this.borrow()
try {
f(item)
} finally {
this.restore(item)
}
}
}