public class QueuedChunkWriter extends java.lang.Object implements IChunkWriter
IChunkWriter
, welcher die zu senden Chunks
nacheinander in eine Eingangs uebergebenen BlockingQueue
einfuegt.Modifier and Type | Field and Description |
---|---|
private boolean |
m_isClosed
Gibt an ob der Writer geschlossen ist.
|
private int |
m_timeout
Das Timeout fuer Schreiboperationen in Millisekunden
|
private java.util.Vector |
m_waitingThreads
Sammelt alle Threats, welche sich innerhalb der write() Methode befinden.
|
private ObjectQueue |
m_writingQueue
Die BlockingQueue in welche Chunks eingefuegt werden.
|
Constructor and Description |
---|
QueuedChunkWriter(ObjectQueue a_writingQueue)
Erstellt einen neuen
QueuedChunkWriter auf Grundlage der
uebergebene Queue mit unendlichen Timeout. |
QueuedChunkWriter(ObjectQueue a_writingQueue,
int a_timeout)
Erstellt einen neuen
QueuedChunkWriter auf Grundlage der
uebergebene Queue und dem entsprechenden Timeout. |
Modifier and Type | Method and Description |
---|---|
void |
close() |
int |
getTimeout() |
void |
setTimeout(int a_value) |
void |
writeChunk(byte[] a_chunk)
Versucht den uebergeben Chunk in den Kanal einzuspeisen und somit zum
Empfaenger zu uebertragen.
|
private final ObjectQueue m_writingQueue
private volatile boolean m_isClosed
private final java.util.Vector m_waitingThreads
Dient dazu, beim Schliessen des Writers evtl. blockierte Threats mittelst
Thread.interrupt()
aufzuwecken.
private int m_timeout
public QueuedChunkWriter(ObjectQueue a_writingQueue, int a_timeout)
QueuedChunkWriter
auf Grundlage der
uebergebene Queue und dem entsprechenden Timeout.a_writingQueue
- Die Queue in welche die Chunks eingefuegt werden.a_timeout
- Der initiale Wert fuer das Timeout der Schreiboperationen. Ein
Wert von 0 bestimmt ein unendliches Timeout.public QueuedChunkWriter(ObjectQueue a_writingQueue)
QueuedChunkWriter
auf Grundlage der
uebergebene Queue mit unendlichen Timeout.a_writingQueue
- Die Queue in welche die Chunks eingefuegt werden.public int getTimeout()
public void setTimeout(int a_value)
public void writeChunk(byte[] a_chunk) throws ConnectionException
IChunkWriter
Sofern der Kanal voll ist blockiert der Aufruf, bis es moeglich war den Chunk zu uebertragen oder eine entsprechende Ausnahme wird geworfen.
writeChunk
in interface IChunkWriter
ConnectionException
public void close() throws java.io.IOException
close
in interface IChunkWriter
java.io.IOException
Copyright © 2023. All rights reserved.