|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.waveset.adapter.DblBufIterator
The DblBufIterator class is an abstract base class to provide a double buffering scheme for an account iterator. All the subclass needs to provide is a way to fill an array with users (subFillArray() method) and a way to handle a close in the middle (subClose() method).
Below is a basic description of how the double buffering works. When instantiated, the first block of users is loaded. A thread is then started that loads the next block of users. It then waits for the the first block of users to be retrieved through calls to getNext(). Once all of the users in the first block are retrieved, additional calls to get next will retrieve users from the second block. Meanwhile, the thread will fill up the first block with additional users. Synchronization of the thread getting the users from the LDAP server (the producer) and the thread calling getNext() (the consumer) is done using Java's built in locking mechanisms on the 2 ArrayList instances containing the users. When the producer finishes filling up an ArrayList it does a notify on it. It then tries to get a lock on the other ArrayList. Once it does, it checks to see if it is empty. If it is not, it waits on the the ArrayList's lock. The consumer thread will do a notify when it finishes with that ArrayList and clears it. This will wake up the producer. If the array was empty when the producer checked it, it will proceed to fill it while maintaining the lock on the ArrayList. When the consumer attempts to access an ArrayList it waits until it can get a lock on it. If it contains any entries, then it gets one off the list and returns it. If there are no entries, it waits on the ArrayList (this gives the producer control, if it is waiting for the lock).
Supplier
,
BufferedAccountQueue
Field Summary | |
protected static Trace |
_trace
Deprecated. |
static java.lang.String |
code_id
Deprecated. |
Constructor Summary | |
DblBufIterator(int blockSize)
Deprecated. |
Method Summary | |
void |
close()
Deprecated. |
protected void |
finalize()
Deprecated. |
protected int |
getCurrentArray()
Deprecated. |
protected java.lang.Exception |
getError()
Deprecated. |
int |
getFillArray()
Deprecated. |
protected int |
getNextArray(int array)
Deprecated. |
protected int |
getNextIndex()
Deprecated. |
protected boolean |
hasError()
Deprecated. |
boolean |
hasNext()
Deprecated. |
protected boolean |
isDone()
Deprecated. |
protected boolean |
isRun()
Deprecated. |
java.lang.Object |
nextObject()
Deprecated. Implements the functionality that corresponds to the next() method a normal iterator-type class/interface, but we'd like the classes that derive from this one to be able to have an class-specific version of next(), i.e. |
protected void |
notifyArrays()
Deprecated. |
void |
run()
Deprecated. |
protected void |
setCurrentArray(int currentArray)
Deprecated. |
protected void |
setDone(boolean done)
Deprecated. |
protected void |
setError(java.lang.Exception error)
Deprecated. |
protected void |
setRun(boolean run)
Deprecated. |
protected void |
start()
Deprecated. |
protected abstract void |
subClose()
Deprecated. |
protected abstract void |
subFillArray(java.util.ArrayList arrayList)
Deprecated. |
Methods inherited from class java.lang.Object |
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
public static final java.lang.String code_id
protected static Trace _trace
Constructor Detail |
public DblBufIterator(int blockSize) throws WavesetException
Method Detail |
protected void start() throws WavesetException
WavesetException
protected void finalize() throws java.lang.Throwable
java.lang.Throwable
protected int getNextArray(int array)
public int getFillArray()
protected boolean isDone()
protected void setDone(boolean done)
protected void setRun(boolean run)
protected boolean isRun()
protected void setError(java.lang.Exception error)
protected boolean hasError()
protected java.lang.Exception getError()
protected int getCurrentArray()
protected void setCurrentArray(int currentArray)
protected void notifyArrays()
public void run()
run
in interface java.lang.Runnable
protected abstract void subFillArray(java.util.ArrayList arrayList) throws java.lang.Exception
java.lang.Exception
protected abstract void subClose()
public void close()
protected int getNextIndex() throws WavesetException
WavesetException
public boolean hasNext() throws WavesetException
WavesetException
public java.lang.Object nextObject() throws java.util.NoSuchElementException, WavesetException
java.util.NoSuchElementException
WavesetException
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |