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)
Balancer
Balancer.next()
.beforeInvocation
in interface Balancer<D>
database
- a database descriptorBalancer.beforeInvocation(net.sf.hajdbc.Database)
public void afterInvocation(Database<D> database)
Balancer
Balancer.next()
.afterInvocation
in interface Balancer<D>
database
- a database descriptorBalancer.afterInvocation(net.sf.hajdbc.Database)
public boolean remove(Database<D> database)
Balancer
remove
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)
Balancer
add
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()
Balancer
all
in interface Balancer<D>
Balancer.all()
public void clear()
Balancer
clear
in interface Balancer<D>
Balancer.clear()
protected abstract void cleared()