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
IChunkReader
Evtl. Fehler oder unzulaessige Zustaende des Kanals koennen durch entsprechende Ausnahmen angezeigt werden.
readChunk
in interface IChunkReader
null
ist nicht zulaessig und ein Rueckgabewert von
byte[0]
sollte vermieden werden.ConnectionException
public 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 IChunkReader
java.io.IOException
public 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.IOException
public int availableChunks() throws ConnectionException
availableChunks
in interface IChunkReader
ConnectionException
Copyright © 2023. All rights reserved.