Package org.refcodes.io
Class BidirectionalStreamByteTransceiverImpl
- java.lang.Object
-
- org.refcodes.io.BidirectionalStreamByteTransceiverImpl
-
- 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 BidirectionalStreamByteTransceiverImpl extends java.lang.Object implements ByteTransceiver
The Class BidirectionalStreamByteTransceiverImpl.- 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 BidirectionalStreamByteTransceiverImpl(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream)Instantiates a new bidirectional stream byte transceiver impl.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()voidflush()Flush.org.refcodes.component.ConnectionStatusgetConnectionStatus()booleanhasDatagram()Determines whether a datagram is available from aDatagramSender.booleanisClosable()booleanisClosed()booleanisOpened()bytereadDatagram()Reads (receives) the next byte passed from aDatagramSendercounterpart.byte[]readDatagrams()Caution: Reads till anOpenException(or anInterruptedExceptionin case of blocking till more data is available) occurs.voidreleaseAll()voidwriteDatagram(byte aDatagram)Write datagram.voidwriteDatagrams(byte[] aDatagram)Write datagrams.voidwriteDatagrams(byte[] aDatagram, int aOffset, int aLength)Write datagrams.-
Methods inherited from interface org.refcodes.io.ByteReceiver
readDatagrams
-
-
-
-
Constructor Detail
-
BidirectionalStreamByteTransceiverImpl
public BidirectionalStreamByteTransceiverImpl(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream) throws org.refcodes.component.OpenExceptionInstantiates a new 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:
isClosedin interfaceorg.refcodes.component.ClosedAccessor
-
isOpened
public boolean isOpened()
- Specified by:
isOpenedin interfaceorg.refcodes.component.OpenedAccessor
-
hasDatagram
public boolean hasDatagram() throws org.refcodes.component.OpenExceptionDetermines whether a datagram is available from aDatagramSender. Use theDatagramProviderextenison'sDatagramProvider.readDatagram()method for retrieving the available datagram.- Specified by:
hasDatagramin 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.InterruptedExceptionCaution: Reads till anOpenException(or anInterruptedExceptionin case of blocking till more data is available) occurs. Reads (receives) the next byte block passed from aBlockSenderorDatagramSendercounterpart. In case none byte block is available, then this method blocks until one is available. When aThreadis waiting for a byte to be read andThread.interrupt()is being called, then the operation is aborted and anInterruptedExceptionis thrown.- Specified by:
readDatagramsin interfaceByteBlockProvider- Specified by:
readDatagramsin interfaceByteProvider- Specified by:
readDatagramsin interfaceByteReceiver- Returns:
- The next byte block sent from the
BlockSenderorDatagramReceivercounterpart. - Throws:
org.refcodes.component.OpenException- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.java.lang.InterruptedException- Thrown when aThreadis waiting, sleeping, or otherwise occupied, and theThreadis interrupted, either before or during the activity.
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()
- Specified by:
getConnectionStatusin interfaceorg.refcodes.component.ConnectionStatusAccessor
-
releaseAll
public void releaseAll()
- Specified by:
releaseAllin interfaceorg.refcodes.mixin.Releaseable
-
close
public void close() throws org.refcodes.component.CloseException- Specified by:
closein interfaceorg.refcodes.component.Closable- Throws:
org.refcodes.component.CloseException
-
readDatagram
public byte readDatagram() throws org.refcodes.component.OpenException, java.lang.InterruptedExceptionReads (receives) the next byte passed from aDatagramSendercounterpart. In case none byte is available, then this method blocks until one is available. To prevent blocking, use theByteDatagramReceiverextension'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 aThreadis waiting for a byte to be read andThread.interrupt()is being called, then the operation is aborted and anInterruptedExceptionis thrown.- Specified by:
readDatagramin interfaceByteDatagramProvider- Returns:
- The next byte sent from the
ByteDatagramSendercounterpart. - Throws:
org.refcodes.component.OpenException- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.java.lang.InterruptedException- Thrown when aThreadis waiting, sleeping, or otherwise occupied, and theThreadis interrupted, either before or during the activity.
-
writeDatagrams
public void writeDatagrams(byte[] aDatagram) throws org.refcodes.component.OpenExceptionWrite datagrams.- Specified by:
writeDatagramsin interfaceByteBlockConsumer- Specified by:
writeDatagramsin 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.OpenExceptionWrite datagrams.- Specified by:
writeDatagramsin interfaceByteBlockConsumer- Specified by:
writeDatagramsin 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.OpenExceptionWrite datagram.- Specified by:
writeDatagramin interfaceByteConsumer- Specified by:
writeDatagramin interfaceByteDatagramConsumer- Parameters:
aDatagram- the datagram- Throws:
org.refcodes.component.OpenException- the open exception
-
flush
public void flush() throws org.refcodes.component.OpenExceptionFlush.- Specified by:
flushin interfaceByteSender- Specified by:
flushin interfacejava.io.Flushable- Specified by:
flushin interfaceorg.refcodes.component.Flushable- Throws:
org.refcodes.component.OpenException- the open exception
-
isClosable
public boolean isClosable()
- Specified by:
isClosablein interfaceorg.refcodes.component.Closable.CloseAutomaton
-
-