Package org.refcodes.io
Class AbstractInputStreamByteReceiver
- java.lang.Object
-
- org.refcodes.component.AbstractConnectableAutomaton
-
- org.refcodes.io.AbstractInputStreamByteReceiver
-
- All Implemented Interfaces:
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.OpenedAccessor,ByteBlockProvider,ByteBlockReceiver,ByteDatagramProvider,ByteDatagramReceiver,ByteProvider,ByteReceiver,Receivable,org.refcodes.mixin.Releaseable
- Direct Known Subclasses:
BidirectionalStreamConnectionByteTransceiverImpl,InputStreamConnectionByteReceiverImpl
public abstract class AbstractInputStreamByteReceiver extends org.refcodes.component.AbstractConnectableAutomaton implements ByteReceiver
Abstract implementation of theByteReceiverinterface. Theopen(InputStream),AbstractConnectableAutomaton.setConnectionStatus(ConnectionStatus)andAbstractConnectableAutomaton.isOpenable()methods are your hooks when extending this class.
-
-
Nested Class Summary
-
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
-
-
Constructor Summary
Constructors Constructor Description AbstractInputStreamByteReceiver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()booleanhasDatagram()Determines whether a datagram is available from aDatagramSender.protected booleanisOpenable(java.io.InputStream aInputStream)Checks if is openable.protected voidopen(java.io.InputStream aInputStream)Open, seeConnectionOpenable.open(Object).bytereadDatagram()Reads (receives) the next byte passed from aDatagramSendercounterpart.voidreleaseAll()-
Methods inherited from class org.refcodes.component.AbstractConnectableAutomaton
getConnectionStatus, isClosable, isClosed, isOpenable, isOpened, open, setConnectionStatus
-
Methods inherited from interface org.refcodes.io.ByteReceiver
readDatagrams, readDatagrams
-
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isConnectionOpened
-
-
-
-
Method Detail
-
hasDatagram
public boolean hasDatagram() throws org.refcodes.component.OpenExceptionDescription copied from interface:ReceivableDetermines whether a datagram is available from aDatagramSender. Use theDatagramProviderextenison'sDatagramProvider.readDatagram()method for retrieving the available datagram.- Specified by:
hasDatagramin interfaceReceivable- Returns:
- True in case there is a datagram ready to be retrieved .
- Throws:
org.refcodes.component.OpenException- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
readDatagram
public byte readDatagram() throws org.refcodes.component.OpenException, java.lang.InterruptedExceptionReads (receives) the next byte passed from aDatagramSendercounterpart. In case none byte is available, then this method blocks until one is available. To prevent blocking, use theByteDatagramReceiverextension'sReceivable.hasDatagram()method to test beforehand whether a byte is available (in a multi-threaded usage scenario,Receivable.hasDatagram()is not a reliable indicator whether this method will block or not). When aThreadis waiting for a byte to be read andThread.interrupt()is being called, then the operation is aborted and anInterruptedExceptionis thrown.- Specified by:
readDatagramin interfaceByteDatagramProvider- Returns:
- The next byte sent from the
ByteDatagramSendercounterpart. - Throws:
org.refcodes.component.OpenException- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.java.lang.InterruptedException- Thrown when aThreadis waiting, sleeping, or otherwise occupied, and theThreadis interrupted, either before or during the activity.
-
releaseAll
public void releaseAll()
- Specified by:
releaseAllin interfaceorg.refcodes.mixin.Releaseable
-
close
public void close() throws org.refcodes.component.CloseException- Specified by:
closein interfaceorg.refcodes.component.Closable- Overrides:
closein classorg.refcodes.component.AbstractConnectableAutomaton- Throws:
org.refcodes.component.CloseException
-
open
protected void open(java.io.InputStream aInputStream) throws org.refcodes.component.OpenExceptionOpen, seeConnectionOpenable.open(Object).- Parameters:
aInputStream- the input stream- Throws:
org.refcodes.component.OpenException- the open exception
-
isOpenable
protected boolean isOpenable(java.io.InputStream aInputStream)
Checks if is openable. See alsoConnectionOpenable.ConnectionOpenAutomaton.isOpenable(Object).- Parameters:
aInputStream- the input stream- Returns:
- true, if is openable
-
-