Package org.refcodes.io
Class PrefetchBidirectionalStreamByteTransceiverImpl
- java.lang.Object
-
- org.refcodes.io.PrefetchBidirectionalStreamByteTransceiverImpl
-
- All Implemented Interfaces:
java.io.Flushable
,org.refcodes.component.Closable
,org.refcodes.component.Closable.CloseAutomaton
,org.refcodes.component.ClosedAccessor
,org.refcodes.component.ConnectableComponent
,org.refcodes.component.ConnectableComponent.ConnectableAutomaton
,org.refcodes.component.ConnectionStatusAccessor
,org.refcodes.component.Flushable
,org.refcodes.component.OpenedAccessor
,ByteBlockConsumer
,ByteBlockProvider
,ByteBlockReceiver
,ByteBlockSender
,ByteConsumer
,ByteDatagramConsumer
,ByteDatagramProvider
,ByteDatagramReceiver
,ByteDatagramSender
,ByteProvider
,ByteReceiver
,ByteSender
,ByteTransceiver
,Receivable
,Sendable
,org.refcodes.mixin.Releaseable
public class PrefetchBidirectionalStreamByteTransceiverImpl extends java.lang.Object implements ByteTransceiver
The Class PrefetchBidirectionalStreamByteTransceiverImpl.- Author:
- steiner
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.component.Closable
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>
-
Nested classes/interfaces inherited from interface org.refcodes.component.ClosedAccessor
org.refcodes.component.ClosedAccessor.ClosedMutator, org.refcodes.component.ClosedAccessor.ClosedProperty
-
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectableComponent
org.refcodes.component.ConnectableComponent.ConnectableAutomaton
-
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusProperty
-
-
Constructor Summary
Constructors Constructor Description PrefetchBidirectionalStreamByteTransceiverImpl(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream)
Instantiates a new prefetch bidirectional stream byte transceiver impl.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
flush()
Flush.org.refcodes.component.ConnectionStatus
getConnectionStatus()
boolean
hasDatagram()
Determines whether a datagram is available from aDatagramSender
.boolean
isClosable()
boolean
isClosed()
boolean
isOpened()
byte
readDatagram()
Reads (receives) the next byte passed from aDatagramSender
counterpart.byte[]
readDatagrams()
Caution: Reads till anOpenException
(or anInterruptedException
in case of blocking till more data is available) occurs.void
releaseAll()
void
writeDatagram(byte aDatagram)
Write datagram.void
writeDatagrams(byte[] aDatagram)
Write datagrams.void
writeDatagrams(byte[] aDatagram, int aOffset, int aLength)
Write datagrams.-
Methods inherited from interface org.refcodes.io.ByteReceiver
readDatagrams
-
-
-
-
Constructor Detail
-
PrefetchBidirectionalStreamByteTransceiverImpl
public PrefetchBidirectionalStreamByteTransceiverImpl(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream) throws org.refcodes.component.OpenException
Instantiates a new prefetch bidirectional stream byte transceiver impl.- Parameters:
aInputStream
- the input streamaOutputStream
- the output stream- Throws:
org.refcodes.component.OpenException
- the open exception
-
-
Method Detail
-
isClosed
public boolean isClosed()
- Specified by:
isClosed
in interfaceorg.refcodes.component.ClosedAccessor
-
isOpened
public boolean isOpened()
- Specified by:
isOpened
in interfaceorg.refcodes.component.OpenedAccessor
-
hasDatagram
public boolean hasDatagram() throws org.refcodes.component.OpenException
Determines whether a datagram is available from aDatagramSender
. Use theDatagramProvider
extenison'sDatagramProvider.readDatagram()
method for retrieving the available datagram.- Specified by:
hasDatagram
in interfaceReceivable
- Returns:
- True in case there is a datagram ready to be retrieved .
- Throws:
org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
readDatagrams
public byte[] readDatagrams() throws org.refcodes.component.OpenException, java.lang.InterruptedException
Caution: Reads till anOpenException
(or anInterruptedException
in case of blocking till more data is available) occurs. Reads (receives) the next byte block passed from aBlockSender
orDatagramSender
counterpart. In case none byte block is available, then this method blocks until one is available. When aThread
is waiting for a byte to be read andThread.interrupt()
is being called, then the operation is aborted and anInterruptedException
is thrown.- Specified by:
readDatagrams
in interfaceByteBlockProvider
- Specified by:
readDatagrams
in interfaceByteProvider
- Specified by:
readDatagrams
in interfaceByteReceiver
- Returns:
- The next byte block sent from the
BlockSender
orDatagramReceiver
counterpart. - Throws:
org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.java.lang.InterruptedException
- Thrown when aThread
is waiting, sleeping, or otherwise occupied, and theThread
is interrupted, either before or during the activity.
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()
- Specified by:
getConnectionStatus
in interfaceorg.refcodes.component.ConnectionStatusAccessor
-
releaseAll
public void releaseAll()
- Specified by:
releaseAll
in interfaceorg.refcodes.mixin.Releaseable
-
close
public void close() throws org.refcodes.component.CloseException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
org.refcodes.component.CloseException
-
readDatagram
public byte readDatagram() throws org.refcodes.component.OpenException, java.lang.InterruptedException
Reads (receives) the next byte passed from aDatagramSender
counterpart. In case none byte is available, then this method blocks until one is available. To prevent blocking, use theByteDatagramReceiver
extension'sReceivable.hasDatagram()
method to test beforehand whether a byte is available (in a multi-threaded usage scenario,Receivable.hasDatagram()
is not a reliable indicator whether this method will block or not). When aThread
is waiting for a byte to be read andThread.interrupt()
is being called, then the operation is aborted and anInterruptedException
is thrown.- Specified by:
readDatagram
in interfaceByteDatagramProvider
- Returns:
- The next byte sent from the
ByteDatagramSender
counterpart. - Throws:
org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.java.lang.InterruptedException
- Thrown when aThread
is waiting, sleeping, or otherwise occupied, and theThread
is interrupted, either before or during the activity.
-
writeDatagrams
public void writeDatagrams(byte[] aDatagram) throws org.refcodes.component.OpenException
Write datagrams.- Specified by:
writeDatagrams
in interfaceByteBlockConsumer
- Specified by:
writeDatagrams
in interfaceByteConsumer
- Parameters:
aDatagram
- the datagram- Throws:
org.refcodes.component.OpenException
- the open exception
-
writeDatagrams
public void writeDatagrams(byte[] aDatagram, int aOffset, int aLength) throws org.refcodes.component.OpenException
Write datagrams.- Specified by:
writeDatagrams
in interfaceByteBlockConsumer
- Specified by:
writeDatagrams
in interfaceByteSender
- Parameters:
aDatagram
- the datagramaOffset
- the offsetaLength
- the length- Throws:
org.refcodes.component.OpenException
- the open exception
-
writeDatagram
public void writeDatagram(byte aDatagram) throws org.refcodes.component.OpenException
Write datagram.- Specified by:
writeDatagram
in interfaceByteConsumer
- Specified by:
writeDatagram
in interfaceByteDatagramConsumer
- Parameters:
aDatagram
- the datagram- Throws:
org.refcodes.component.OpenException
- the open exception
-
flush
public void flush() throws org.refcodes.component.OpenException
Flush.- Specified by:
flush
in interfaceByteSender
- Specified by:
flush
in interfacejava.io.Flushable
- Specified by:
flush
in interfaceorg.refcodes.component.Flushable
- Throws:
org.refcodes.component.OpenException
- the open exception
-
isClosable
public boolean isClosable()
- Specified by:
isClosable
in interfaceorg.refcodes.component.Closable.CloseAutomaton
-
-