Module org.refcodes.io
Package org.refcodes.io
Class BidirectionalStreamConnectionTransceiverImpl<DATA extends 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:
Flushable
,org.refcodes.component.BidirectionalConnectionComponent<InputStream,
,OutputStream> org.refcodes.component.BidirectionalConnectionComponent.BidirectionalConnectionAutomaton<InputStream,
,OutputStream> org.refcodes.component.BidirectionalConnectionOpenable<InputStream,
,OutputStream> org.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<InputStream,
,OutputStream> 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
,Availability
,BidirectionalConnectionTransceiver<DATA,
,InputStream, OutputStream> BidirectionalStreamConnectionTransceiver<DATA>
,DatagramDestination<DATA>
,DatagramReceiver<DATA>
,DatagramsDestination<DATA>
,DatagramSource<DATA>
,DatagramsReceiver<DATA>
,DatagramsSource<DATA>
,DatagramsTransceiver<DATA>
,DatagramsTransmitter<DATA>
,DatagramTransceiver<DATA>
,DatagramTransmitter<DATA>
,Receivable
,Transmittable
public class BidirectionalStreamConnectionTransceiverImpl<DATA extends 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 Object,
OUTPUT extends Object> Nested classes/interfaces inherited from interface org.refcodes.component.BidirectionalConnectionOpenable
org.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<INPUT extends Object,
OUTPUT extends 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
Nested classes/interfaces inherited from interface org.refcodes.component.Flushable
org.refcodes.component.Flushable.FlushBuilder<B extends org.refcodes.component.Flushable.FlushBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
-
Constructor Summary
ConstructorDescriptionInstantiates a new bidirectional stream connection transceiver impl. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
void
flush()
boolean
isOpenable
(InputStream aInputStream, OutputStream aOutputStream) void
open
(InputStream aInputStream, OutputStream aOutputStream) protected void
open
(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
Writes (sends) a datagram to a listeningDatagramReceiver
.Methods inherited from class org.refcodes.io.AbstractInputStreamReceiver
available, isOpenable, open, receive
Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
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.Availability
available, hasAvailable
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
Methods inherited from interface org.refcodes.component.Closable.CloseAutomaton
isClosable
Methods inherited from interface org.refcodes.component.ClosedAccessor
isClosed
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpened
Methods inherited from interface org.refcodes.io.DatagramsDestination
receive, receive
Methods inherited from interface org.refcodes.io.DatagramsReceiver
receive, receiveAll
Methods inherited from interface org.refcodes.io.DatagramsSource
transmitAll
Methods inherited from interface org.refcodes.io.DatagramsTransmitter
transmit
Methods inherited from interface org.refcodes.component.Flushable
flushUnchecked, isFlushable
-
Constructor Details
-
BidirectionalStreamConnectionTransceiverImpl
public BidirectionalStreamConnectionTransceiverImpl()Instantiates a new bidirectional stream connection transceiver impl.
-
-
Method Details
-
isOpenable
- Specified by:
isOpenable
in interfaceorg.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<InputStream,
OutputStream>
-
open
- Specified by:
open
in interfaceorg.refcodes.component.BidirectionalConnectionOpenable<InputStream,
OutputStream> - Throws:
IOException
-
transmit
Writes (sends) a datagram to a listeningDatagramReceiver
.- Specified by:
transmit
in interfaceDatagramSource<DATA extends Serializable>
- Specified by:
transmit
in interfaceDatagramsSource<DATA extends Serializable>
- Parameters:
aDatagram
- The datagram to be pushed to the receivingDatagramSource
.- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
flush
- Specified by:
flush
in interfaceDatagramTransmitter<DATA extends Serializable>
- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in interfaceorg.refcodes.component.Flushable
- Throws:
IOException
-
close
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classAbstractInputStreamReceiver<DATA extends Serializable>
- Throws:
IOException
-
open
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 theOutputStreamConnectionDatagramsTransmitter
connected with theInputStreamConnectionReceiverImpl
counterpart which is being opened with thePipedInputStream
. ATTENTION: For maintainers, please keep the below code in sync with the code fromOutputStreamConnectionDatagramsTransmitter.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:
IOException
- the open exception
-