Package org.refcodes.io
Class AbstractInputStreamReceiver<DATA extends java.io.Serializable>
- java.lang.Object
-
- org.refcodes.component.AbstractConnectableAutomaton
-
- org.refcodes.io.AbstractInputStreamReceiver<DATA>
-
- Type Parameters:
DATA- The type of the datagram to be operated with.
- 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,BlockProvider<DATA>,BlockReceiver<DATA>,DatagramProvider<DATA>,DatagramReceiver<DATA>,Provider<DATA>,Receivable,Receiver<DATA>,org.refcodes.mixin.Releaseable
- Direct Known Subclasses:
BidirectionalStreamConnectionTransceiverImpl,InputStreamConnectionReceiverImpl
public abstract class AbstractInputStreamReceiver<DATA extends java.io.Serializable> extends org.refcodes.component.AbstractConnectableAutomaton implements Receiver<DATA>
Abstract implementation of theReceiverinterface. 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 AbstractInputStreamReceiver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()booleanhasDatagram()Checks for datagram.protected booleanisOpenable(java.io.InputStream aInputStream)Checks if is openable.protected voidopen(java.io.InputStream aInputStream)Open, see alsoConnectionOpenable.open(Object).DATAreadDatagram()Reads (receives) the next datagram 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.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isConnectionOpened
-
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.Receiver
readDatagrams, readDatagrams
-
-
-
-
Method Detail
-
hasDatagram
public boolean hasDatagram() throws org.refcodes.component.OpenExceptionChecks for datagram.- Specified by:
hasDatagramin interfaceReceivable- Returns:
- true, if successful
- Throws:
org.refcodes.component.OpenException- the open exception
-
readDatagram
public DATA readDatagram() throws org.refcodes.component.OpenException, java.lang.InterruptedException
Reads (receives) the next datagram passed from aDatagramSendercounterpart. In case none datagram is available, then this method blocks until one is available. To prevent blocking, use theDatagramReceiverextension'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 datagram to be read andThread.interrupt()is being called, then the operation is aborted and anInterruptedExceptionis thrown.- Specified by:
readDatagramin interfaceDatagramProvider<DATA extends java.io.Serializable>- Returns:
- The next datagram sent from the
DatagramSendercounterpart. - 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, see alsoConnectionOpenable.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
-
-