public class QueuedChunkReader extends java.lang.Object implements IChunkReader
IChunkReader, welcher die auszugebenen Chunks
nacheinander aus einer Eingangs uebergebenen BlockingQueue bezieht.| Modifier and Type | Field and Description |
|---|---|
private boolean |
m_isClosed
Gibt an ob der Reader geschlossen ist.
|
private boolean |
m_isTearDown
Gibt an ob der Reader heruntergefahren werden soll.
|
private ObjectQueue |
m_readingQueue
Die BlockingQueue uas welcher chunks gelesen werden.
|
private int |
m_timeout
Das Timeout fuer Leseoperationen in millisekunden
|
private java.util.Vector |
m_waitingThreads
Sammelt alle Threats, welche sich innerhalb der read() Methode befinden.
|
| Constructor and Description |
|---|
QueuedChunkReader(ObjectQueue a_readingQueue)
Erstellt einen neuen
QueuedChunkReader auf Grundlage der
uebergebene Queue mit einen unendlichen Timeout. |
QueuedChunkReader(ObjectQueue a_readingQueue,
int a_timeout)
Erstellt einen neuen
QueuedChunkReader auf Grundlage der
uebergebene Queue und dem entsprechenden Timeout. |
| Modifier and Type | Method and Description |
|---|---|
int |
availableChunks()
Liefert die Anzahl der Chunks innerhalb der Queue.
|
void |
close()
Schliesst den Reader ungeachtet noch ausstehender Chunks innerhalb der
Queue.
|
int |
getTimeout()
Liefert den aktuelle Wert des Timeout
|
byte[] |
readChunk()
Gibt den aeltesten (im Sinne des Einfuegens in den Kanal) der im Kanal
befindlichen Chunks zurueck.
|
void |
setTimeout(int a_value)
Setzt den Wert fuer das Timeout der Leseoperationen
|
void |
tearDown()
Faehrt den Reader runter.
|
private final ObjectQueue m_readingQueue
private volatile boolean m_isClosed
private final java.util.Vector m_waitingThreads
Dient dazu um beim Schliessen des Reader evtl. blockierte Threats
mittelst Thread.interrupt() aufzuwecken.
private int m_timeout
private boolean m_isTearDown
Dies erlaubt das Schliessen des Reader solange zu verzoegern, bis keine ausstehenden Chunks mehr vorhanden sind.
public QueuedChunkReader(ObjectQueue a_readingQueue, int a_timeout)
QueuedChunkReader auf Grundlage der
uebergebene Queue und dem entsprechenden Timeout.a_readingQueue - Die Queue aus welcher die Chunks gelesen werden.a_timeout - Der initiale Wert fuer das Timeout der Leseoperationen. Ein Wert
von 0 bestimmt ein unendliches Timeout.public QueuedChunkReader(ObjectQueue a_readingQueue)
QueuedChunkReader auf Grundlage der
uebergebene Queue mit einen unendlichen Timeout.a_readingQueue - Die Queue aus welcher die Chunks gelesen werden.public int getTimeout()
public void setTimeout(int a_value)
public byte[] readChunk()
throws ConnectionException
IChunkReaderEvtl. Fehler oder unzulaessige Zustaende des Kanals koennen durch entsprechende Ausnahmen angezeigt werden.
readChunk in interface IChunkReadernull ist nicht zulaessig und ein Rueckgabewert von
byte[0] sollte vermieden werden.ConnectionExceptionpublic void close()
throws java.io.IOException
Wenn gewuenscht wird mit dem Schliessen bis zur Auslieferung dieser
Chunks zu warten sollte tearDown() gewaehlt werden.
close in interface IChunkReaderjava.io.IOExceptionpublic void tearDown()
throws java.io.IOException
Das heisst bis zum Erreichen einer leeren Queue bleibt der Reader offen. Danach wird er automatisch geschlossen.
java.io.IOExceptionpublic int availableChunks()
throws ConnectionException
availableChunks in interface IChunkReaderConnectionExceptionCopyright © 2023. All rights reserved.