The base connection pool class, which all other connection pools are based on. This class is not instantiated directly, but subclasses should at the very least implement the following API:
initialize(Hash, &block) |
The block is used as the connection proc, which should accept a single symbol argument. |
hold(Symbol, &block) |
Yield a connection object (obtained from calling the block passed to initialize) to the current block. For sharded connection pools, the Symbol passed is the shard/server to use. |
disconnect(Symbol, &block) |
Disconnect the connection object. If a block is given, pass the connection option to it, otherwise use the :disconnection_proc option in the hash passed to initialize. For sharded connection pools, the Symbol passed is the shard/server to use. |
servers |
An array of shard/server symbols for all shards/servers that this connection pool recognizes. |
size |
an integer representing the total number of connections in the pool, or for the given shard/server if sharding is supported. |
For sharded connection pools, the sharded API adds the following methods:
add_servers(Array of Symbols) |
start recognizing all shards/servers specified by the array of symbols. |
remove_servers(Array of Symbols) |
no longer recognize all shards/servers specified by the array of symbols. |