Module org.refcodes.io
Package org.refcodes.io
Class PrefetchBidirectionalStreamConnectionTransceiver<DATA extends Serializable>
java.lang.Object
org.refcodes.component.AbstractConnectable
org.refcodes.component.AbstractConnectableAutomaton
org.refcodes.io.AbstractDatagramsReceiver<DATA>
org.refcodes.io.AbstractPrefetchInputStreamReceiver<DATA>
org.refcodes.io.PrefetchBidirectionalStreamConnectionTransceiver<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 PrefetchBidirectionalStreamConnectionTransceiver<DATA extends Serializable>
extends AbstractPrefetchInputStreamReceiver<DATA>
implements BidirectionalStreamConnectionTransceiver<DATA>
The Class PrefetchBidirectionalStreamConnectionTransceiver.
- Author:
- steiner
-
Nested Class Summary
Nested classes/interfaces inherited from interface org.refcodes.component.BidirectionalConnectionComponent
org.refcodes.component.BidirectionalConnectionComponent.BidirectionalConnectionAutomaton<INPUT,OUTPUT> Nested classes/interfaces inherited from interface org.refcodes.component.BidirectionalConnectionOpenable
org.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<INPUT,OUTPUT> 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.ClosedPropertyNested classes/interfaces inherited from interface org.refcodes.component.ConnectableComponent
org.refcodes.component.ConnectableComponent.ConnectableAutomatonNested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusPropertyNested 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 -
Field Summary
Fields inherited from class org.refcodes.io.AbstractDatagramsReceiver
DATAGRAM_QUEUE_SIZE -
Constructor Summary
ConstructorsConstructorDescriptionInstantiates a new prefetch bidirectional stream connection transceiver impl.PrefetchBidirectionalStreamConnectionTransceiver(ExecutorService aExecutorService) Instantiates a new prefetch bidirectional stream connection transceiver impl. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()voidflush()booleanisOpenable(InputStream aInputStream, OutputStream aOutputStream) voidopen(InputStream aInputStream, OutputStream aOutputStream) protected voidopen(OutputStream aOutputStream) HINT: For testing purposes you can pass an already flushedObjectOutputStream(viaObjectOutputStream.flush()) encapsulating aPipedOutputStreamwhich in turn encapsulates aPipedInputStreamto thisopen(OutputStream)method.voidWrites (sends) a datagram to a listeningDatagramReceiver.Methods inherited from class org.refcodes.io.AbstractPrefetchInputStreamReceiver
isOpenable, openMethods inherited from class org.refcodes.io.AbstractDatagramsReceiver
available, pushDatagram, pushDatagrams, pushDatagrams, receive, receiveAllMethods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatusMethods inherited from class org.refcodes.component.AbstractConnectable
isThrownAsOfAlreadyClosedMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.refcodes.io.Availability
available, hasAvailableMethods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUncheckedMethods inherited from interface org.refcodes.component.Closable.CloseAutomaton
isClosableMethods inherited from interface org.refcodes.component.ClosedAccessor
isClosedMethods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpenedMethods inherited from interface org.refcodes.io.DatagramsDestination
receive, receiveMethods inherited from interface org.refcodes.io.DatagramsReceiver
receive, receiveAllMethods inherited from interface org.refcodes.io.DatagramsSource
transmitMethods inherited from interface org.refcodes.io.DatagramsTransmitter
transmitMethods inherited from interface org.refcodes.component.Flushable
flushUnchecked, isFlushable
-
Constructor Details
-
PrefetchBidirectionalStreamConnectionTransceiver
public PrefetchBidirectionalStreamConnectionTransceiver()Instantiates a new prefetch bidirectional stream connection transceiver impl. -
PrefetchBidirectionalStreamConnectionTransceiver
Instantiates a new prefetch bidirectional stream connection transceiver impl.- Parameters:
aExecutorService- the executor service
-
-
Method Details
-
isOpenable
- Specified by:
isOpenablein interfaceorg.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<InputStream,OutputStream>
-
open
- Specified by:
openin interfaceorg.refcodes.component.BidirectionalConnectionOpenable<InputStream,OutputStream> - Throws:
IOException
-
transmit
Writes (sends) a datagram to a listeningDatagramReceiver.- Specified by:
transmitin interfaceDatagramSource<DATA extends Serializable>- Specified by:
transmitin 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:
flushin interfaceDatagramTransmitter<DATA extends Serializable>- Specified by:
flushin interfaceFlushable- Specified by:
flushin interfaceorg.refcodes.component.Flushable- Throws:
IOException
-
close
- Specified by:
closein interfaceorg.refcodes.component.Closable- Overrides:
closein classAbstractPrefetchInputStreamReceiver<DATA extends Serializable>- Throws:
IOException
-
open
HINT: For testing purposes you can pass an already flushedObjectOutputStream(viaObjectOutputStream.flush()) encapsulating aPipedOutputStreamwhich in turn encapsulates aPipedInputStreamto thisopen(OutputStream)method. This enables you a non-blocking test of theOutputStreamConnectionDatagramsTransmitterconnected with thePrefetchInputStreamConnectionReceivercounterpart 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
-