D - either java.sql.Driver or javax.sql.DataSourcepublic abstract class AbstractBalancer<D> extends java.lang.Object implements Balancer<D>
Balancer.next().
Uses A copy-on-write algorithm for add(Database), remove(Database), and clear().
Calls to all() are non-blocking.| Modifier and Type | Field and Description |
|---|---|
protected java.util.SortedSet<Database<D>> |
databaseSet |
protected java.util.concurrent.locks.Lock |
lock |
| Constructor and Description |
|---|
AbstractBalancer() |
| Modifier and Type | Method and Description |
|---|---|
boolean |
add(Database<D> database)
Adds the specified database to this balancer.
|
protected abstract void |
added(Database<D> database)
Called when a database was added to the set.
|
void |
afterInvocation(Database<D> database)
Called after an operation is performed on the specified database retrieved via
Balancer.next(). |
java.util.Set<Database<D>> |
all()
Returns an unmodifiable collection of databases known to this balancer
|
void |
beforeInvocation(Database<D> database)
Called before an operation is performed on the specified database retrieved via
Balancer.next(). |
void |
clear()
Removes all databases from this balancer.
|
protected abstract void |
cleared()
Called when the set was cleared.
|
boolean |
remove(Database<D> database)
Removes the specified database from this balancer.
|
protected abstract void |
removed(Database<D> database)
Called when a database was removed from the set.
|
protected java.util.concurrent.locks.Lock lock
protected volatile java.util.SortedSet<Database<D>> databaseSet
public AbstractBalancer()
public void beforeInvocation(Database<D> database)
BalancerBalancer.next().beforeInvocation in interface Balancer<D>database - a database descriptorBalancer.beforeInvocation(net.sf.hajdbc.Database)public void afterInvocation(Database<D> database)
BalancerBalancer.next().afterInvocation in interface Balancer<D>database - a database descriptorBalancer.afterInvocation(net.sf.hajdbc.Database)public boolean remove(Database<D> database)
Balancerremove in interface Balancer<D>database - a database descriptorBalancer.remove(net.sf.hajdbc.Database)protected abstract void removed(Database<D> database)
database - a database descriptorpublic boolean add(Database<D> database)
Balanceradd in interface Balancer<D>database - a database descriptorBalancer.add(net.sf.hajdbc.Database)protected abstract void added(Database<D> database)
database - a database descriptorpublic java.util.Set<Database<D>> all()
Balancerall in interface Balancer<D>Balancer.all()public void clear()
Balancerclear in interface Balancer<D>Balancer.clear()protected abstract void cleared()