Package org.refcodes.io
Class BidirectionalStreamConnectionTransceiverImpl<DATA extends java.io.Serializable>
- java.lang.Object
-
- org.refcodes.component.AbstractConnectableAutomaton
-
- org.refcodes.io.AbstractInputStreamReceiver<DATA>
-
- org.refcodes.io.BidirectionalStreamConnectionTransceiverImpl<DATA>
-
- Type Parameters:
DATA
- the generic type
- All Implemented Interfaces:
java.io.Flushable
,org.refcodes.component.BidirectionalConnectionComponent<DATA,INPUT>
,org.refcodes.component.BidirectionalConnectionComponent.BidirectionalConnectionAutomaton<INPUT,OUTPUT>
,org.refcodes.component.BidirectionalConnectionOpenable<DATA,INPUT>
,org.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<DATA,INPUT>
,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
,BidirectionalConnectionTransceiver<DATA,java.io.InputStream,java.io.OutputStream>
,BidirectionalStreamConnectionTransceiver<DATA>
,BlockConsumer<DATA>
,BlockProvider<DATA>
,BlockReceiver<DATA>
,BlockSender<DATA>
,Consumer<DATA>
,DatagramConsumer<DATA>
,DatagramProvider<DATA>
,DatagramReceiver<DATA>
,DatagramSender<DATA>
,DatagramTransceiver<DATA>
,Provider<DATA>
,Receivable
,Receiver<DATA>
,Sendable
,Sender<DATA>
,Transceiver<DATA>
,org.refcodes.mixin.Releaseable
public class BidirectionalStreamConnectionTransceiverImpl<DATA extends java.io.Serializable> extends AbstractInputStreamReceiver<DATA> implements BidirectionalStreamConnectionTransceiver<DATA>
The Class BidirectionalStreamConnectionTransceiverImpl.- Author:
- steiner
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.refcodes.component.BidirectionalConnectionComponent
org.refcodes.component.BidirectionalConnectionComponent.BidirectionalConnectionAutomaton<INPUT extends java.lang.Object,OUTPUT extends java.lang.Object>
-
Nested classes/interfaces inherited from interface org.refcodes.component.BidirectionalConnectionOpenable
org.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<INPUT extends java.lang.Object,OUTPUT extends java.lang.Object>
-
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 BidirectionalStreamConnectionTransceiverImpl()
Instantiates a new bidirectional stream connection transceiver impl.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
flush()
boolean
isOpenable(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream)
void
open(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream)
protected void
open(java.io.OutputStream aOutputStream)
HINT: For testing purposes you can pass an already flushedObjectOutputStream
(viaObjectOutputStream.flush()
) encapsulating aPipedOutputStream
which in turn encapsulates aPipedInputStream
to thisopen(OutputStream)
method.void
writeDatagram(DATA aDatagram)
Writes (sends) a datagram to a listeningDatagramReceiver
.-
Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
-
Methods inherited from class org.refcodes.io.AbstractInputStreamReceiver
hasDatagram, isOpenable, open, readDatagram, releaseAll
-
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isConnectionOpened
-
Methods inherited from interface org.refcodes.io.Consumer
writeDatagrams
-
Methods inherited from interface org.refcodes.io.DatagramProvider
readDatagram
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.refcodes.io.Receivable
hasDatagram
-
Methods inherited from interface org.refcodes.io.Receiver
readDatagrams, readDatagrams
-
Methods inherited from interface org.refcodes.io.Sender
writeDatagrams
-
-
-
-
Method Detail
-
isOpenable
public boolean isOpenable(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream)
-
open
public void open(java.io.InputStream aInputStream, java.io.OutputStream aOutputStream) throws org.refcodes.component.OpenException
-
writeDatagram
public void writeDatagram(DATA aDatagram) throws org.refcodes.component.OpenException
Writes (sends) a datagram to a listeningDatagramReceiver
.- Specified by:
writeDatagram
in interfaceConsumer<DATA extends java.io.Serializable>
- Specified by:
writeDatagram
in interfaceDatagramConsumer<DATA extends java.io.Serializable>
- Parameters:
aDatagram
- The datagram to be pushed to the receivingDatagramConsumer
.- Throws:
org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
flush
public void flush() throws org.refcodes.component.OpenException
-
close
public void close() throws org.refcodes.component.CloseException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classAbstractInputStreamReceiver<DATA extends java.io.Serializable>
- Throws:
org.refcodes.component.CloseException
-
open
protected void open(java.io.OutputStream aOutputStream) throws org.refcodes.component.OpenException
HINT: For testing purposes you can pass an already flushedObjectOutputStream
(viaObjectOutputStream.flush()
) encapsulating aPipedOutputStream
which in turn encapsulates aPipedInputStream
to thisopen(OutputStream)
method. This enables you a non-blocking test of theOutputStreamConnectionSenderImpl
connected with theInputStreamConnectionReceiverImpl
counterpart which is being opened with thePipedInputStream
. ATTENTION: For maintainers, please keep the below code in sync with the code fromOutputStreamConnectionSenderImpl.open(java.io.OutputStream)
; except do not set the connection status here, make it protected and do not @Override anything.- Parameters:
aOutputStream
- the output stream- Throws:
org.refcodes.component.OpenException
- the open exception
-
-