Module org.refcodes.io
Package org.refcodes.io
Class PrefetchBidirectionalStreamConnectionByteTransceiver
- java.lang.Object
-
- org.refcodes.io.AbstractBytesDestination
-
- org.refcodes.io.AbstractBytesReceiver
-
- org.refcodes.io.AbstractPrefetchInputStreamByteReceiver
-
- org.refcodes.io.PrefetchBidirectionalStreamConnectionByteTransceiver
-
- 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
,BidirectionalConnectionByteTransceiver<InputStream,OutputStream>
,BidirectionalStreamConnectionByteTransceiver
,ByteDestination
,ByteReceiver
,BytesDestination
,ByteSource
,BytesReceiver
,BytesSource
,BytesTransceiver
,BytesTransmitter
,ByteTransceiver
,ByteTransmitter
,Receivable
,Skippable
,TimeoutInputStreamAccessor
,Transmittable
,org.refcodes.mixin.InputStreamAccessor
,org.refcodes.mixin.Loggable
,org.refcodes.mixin.OutputStreamAccessor
public class PrefetchBidirectionalStreamConnectionByteTransceiver extends AbstractPrefetchInputStreamByteReceiver implements BidirectionalStreamConnectionByteTransceiver
The Class PrefetchBidirectionalStreamConnectionByteTransceiver.- Author:
- steiner
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class org.refcodes.io.AbstractBytesReceiver
AbstractBytesReceiver.ConnectableAutomaton
-
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.io.BytesReceiver
BytesReceiver.ReceiverInputStream
-
Nested classes/interfaces inherited from interface org.refcodes.io.BytesTransmitter
BytesTransmitter.TransmitterOutputStream
-
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.mixin.InputStreamAccessor
org.refcodes.mixin.InputStreamAccessor.InputStreamBuilder<B extends org.refcodes.mixin.InputStreamAccessor.InputStreamBuilder<?>>, org.refcodes.mixin.InputStreamAccessor.InputStreamMutator, org.refcodes.mixin.InputStreamAccessor.InputStreamProperty
-
Nested classes/interfaces inherited from interface org.refcodes.component.OpenedAccessor
org.refcodes.component.OpenedAccessor.OpenedMutator, org.refcodes.component.OpenedAccessor.OpenedProperty
-
Nested classes/interfaces inherited from interface org.refcodes.mixin.OutputStreamAccessor
org.refcodes.mixin.OutputStreamAccessor.OutputStreamBuilder<B extends org.refcodes.mixin.OutputStreamAccessor.OutputStreamBuilder<?>>, org.refcodes.mixin.OutputStreamAccessor.OutputStreamMutator, org.refcodes.mixin.OutputStreamAccessor.OutputStreamProperty
-
Nested classes/interfaces inherited from interface org.refcodes.io.TimeoutInputStreamAccessor
TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<B extends TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<?>>, TimeoutInputStreamAccessor.TimeoutInputStreamMutator, TimeoutInputStreamAccessor.TimeoutInputStreamProperty
-
-
Field Summary
-
Fields inherited from class org.refcodes.io.AbstractBytesReceiver
_automaton
-
Fields inherited from class org.refcodes.io.AbstractBytesDestination
_datagramQueue, DATAGRAM_QUEUE_SIZE
-
-
Constructor Summary
Constructors Constructor Description PrefetchBidirectionalStreamConnectionByteTransceiver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
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
transmitByte(byte aByte)
Writes (sends) a byte.-
Methods inherited from class org.refcodes.io.AbstractPrefetchInputStreamByteReceiver
isOpenable, open
-
Methods inherited from class org.refcodes.io.AbstractBytesReceiver
available, getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, receiveAllBytes, receiveByte, receiveBytes, setConnectionStatus
-
Methods inherited from class org.refcodes.io.AbstractBytesDestination
pushDatagram, pushDatagrams, pushDatagrams
-
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.io.BytesDestination
receiveByte, receiveBytes
-
Methods inherited from interface org.refcodes.io.BytesReceiver
getInputStream, getInputStream, receiveAllBytes, receiveBytes, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, skip
-
Methods inherited from interface org.refcodes.io.BytesSource
transmitAllBytes
-
Methods inherited from interface org.refcodes.io.BytesTransmitter
getOutputStream, transmitBytes
-
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpened
-
Methods inherited from interface org.refcodes.mixin.Loggable
alert, alert, critical, critical, debug, error, info, notice, panic, trace, warn, warn
-
Methods inherited from interface org.refcodes.io.Skippable
available, skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin, skipAvailableWithin
-
-
-
-
Method Detail
-
isOpenable
public boolean isOpenable(InputStream aInputStream, OutputStream aOutputStream)
- Specified by:
isOpenable
in interfaceorg.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<InputStream,OutputStream>
-
open
public void open(InputStream aInputStream, OutputStream aOutputStream) throws IOException
- Specified by:
open
in interfaceorg.refcodes.component.BidirectionalConnectionOpenable<InputStream,OutputStream>
- Throws:
IOException
-
transmitByte
public void transmitByte(byte aByte) throws IOException
Writes (sends) a byte.- Specified by:
transmitByte
in interfaceByteSource
- Specified by:
transmitByte
in interfaceBytesSource
- Parameters:
aByte
- The byte to be pushed.- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
flush
public void flush() throws IOException
- Specified by:
flush
in interfaceByteTransmitter
- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in interfaceorg.refcodes.component.Flushable
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classAbstractPrefetchInputStreamByteReceiver
- Throws:
IOException
-
open
protected void open(OutputStream aOutputStream) throws IOException
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 thePrefetchInputStreamConnectionReceiver
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
-
-