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 theReceiver
interface. 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 void
close()
boolean
hasDatagram()
Checks for datagram.protected boolean
isOpenable(java.io.InputStream aInputStream)
Checks if is openable.protected void
open(java.io.InputStream aInputStream)
Open, see alsoConnectionOpenable.open(Object)
.DATA
readDatagram()
Reads (receives) the next datagram passed from aDatagramSender
counterpart.void
releaseAll()
-
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.OpenException
Checks for datagram.- Specified by:
hasDatagram
in 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 aDatagramSender
counterpart. In case none datagram is available, then this method blocks until one is available. To prevent blocking, use theDatagramReceiver
extension'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 aThread
is waiting for a datagram to be read andThread.interrupt()
is being called, then the operation is aborted and anInterruptedException
is thrown.- Specified by:
readDatagram
in interfaceDatagramProvider<DATA extends java.io.Serializable>
- Returns:
- The next datagram sent from the
DatagramSender
counterpart. - Throws:
org.refcodes.component.OpenException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.java.lang.InterruptedException
- Thrown when aThread
is waiting, sleeping, or otherwise occupied, and theThread
is interrupted, either before or during the activity.
-
releaseAll
public void releaseAll()
- Specified by:
releaseAll
in interfaceorg.refcodes.mixin.Releaseable
-
close
public void close() throws org.refcodes.component.CloseException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classorg.refcodes.component.AbstractConnectableAutomaton
- Throws:
org.refcodes.component.CloseException
-
open
protected void open(java.io.InputStream aInputStream) throws org.refcodes.component.OpenException
Open, 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
-
-