Module org.refcodes.io
Package org.refcodes.io
Class BidirectionalStreamConnectionByteTransceiverImpl
- java.lang.Object
-
- org.refcodes.component.AbstractConnectableAutomaton
-
- org.refcodes.io.AbstractInputStreamByteReceiver
-
- org.refcodes.io.BidirectionalStreamConnectionByteTransceiverImpl
-
- 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.OutputStreamAccessor
public class BidirectionalStreamConnectionByteTransceiverImpl extends AbstractInputStreamByteReceiver implements BidirectionalStreamConnectionByteTransceiver
The Class BidirectionalStreamConnectionByteTransceiverImpl.- 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.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
-
-
Constructor Summary
Constructors Constructor Description BidirectionalStreamConnectionByteTransceiverImpl()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()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.voidtransmitByte(byte aByte)Writes (sends) a byte.-
Methods inherited from class org.refcodes.io.AbstractInputStreamByteReceiver
available, isOpenable, open, receiveByte
-
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.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.io.Skippable
available, skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin
-
-
-
-
Method Detail
-
isOpenable
public boolean isOpenable(InputStream aInputStream, OutputStream aOutputStream)
- Specified by:
isOpenablein interfaceorg.refcodes.component.BidirectionalConnectionOpenable.BidirectionalConnectionOpenAutomaton<InputStream,OutputStream>
-
open
public void open(InputStream aInputStream, OutputStream aOutputStream) throws IOException
- Specified by:
openin interfaceorg.refcodes.component.BidirectionalConnectionOpenable<InputStream,OutputStream>- Throws:
IOException
-
transmitByte
public void transmitByte(byte aByte) throws IOExceptionWrites (sends) a byte.- Specified by:
transmitBytein interfaceByteSource- Specified by:
transmitBytein 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:
flushin interfaceByteTransmitter- Specified by:
flushin interfaceFlushable- Specified by:
flushin interfaceorg.refcodes.component.Flushable- Throws:
IOException
-
close
public void close() throws IOException- Specified by:
closein interfaceorg.refcodes.component.Closable- Overrides:
closein classAbstractInputStreamByteReceiver- Throws:
IOException
-
open
protected void open(OutputStream aOutputStream) throws IOException
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 theInputStreamConnectionReceiverImplcounterpart 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
-
-