- java.lang.Object
-
- org.refcodes.io.AbstractBytesDestination
-
- org.refcodes.io.AbstractBytesReceiver
-
- 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
,Availability
,ByteDestination
,ByteReceiver
,BytesDestination
,BytesReceiver
,Receivable
,Skippable
,TimeoutInputStreamAccessor
,org.refcodes.mixin.InputStreamAccessor
,org.refcodes.mixin.Loggable
- Direct Known Subclasses:
AbstractPrefetchInputStreamByteReceiver
,ByteArrayReceiver
,BytesReceiverDecorator
,LoopbackBytesReceiver
,LoopbackBytesTransceiver
public abstract class AbstractBytesReceiver extends AbstractBytesDestination implements BytesReceiver
TheAbstractBytesReceiver
is a base abstract implementation of theBytesReceiver
interface providing common functionality for concrete real live implementations.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
AbstractBytesReceiver.ConnectableAutomaton
The Class ConnectableAutomaton.-
Nested classes/interfaces inherited from interface org.refcodes.io.BytesReceiver
BytesReceiver.ReceiverInputStream
-
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.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusProperty
-
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.io.TimeoutInputStreamAccessor
TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<B extends TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<?>>, TimeoutInputStreamAccessor.TimeoutInputStreamMutator, TimeoutInputStreamAccessor.TimeoutInputStreamProperty
-
-
Field Summary
Fields Modifier and Type Field Description protected AbstractBytesReceiver.ConnectableAutomaton
_automaton
-
Fields inherited from class org.refcodes.io.AbstractBytesDestination
_datagramQueue, DATAGRAM_QUEUE_SIZE
-
-
Constructor Summary
Constructors Constructor Description AbstractBytesReceiver()
Constructs aAbstractBytesReceiver
with a default sized blocking queue enabling a maximum ofAbstractBytesDestination.DATAGRAM_QUEUE_SIZE
datagrams. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue.AbstractBytesReceiver(int aCapacity)
Constructs aAbstractBytesReceiver
with a custom sized blocking queue enabling a maximum of datagrams as specified by the capacity parameter. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
available()
Determines the number of available datagram from aDatagramTransmitter
.void
close()
org.refcodes.component.ConnectionStatus
getConnectionStatus()
boolean
isClosable()
boolean
isClosed()
protected boolean
isOpenable()
Checks if is openable.boolean
isOpened()
protected void
open()
Open.byte[]
receiveAllBytes()
Reads (receives) the all currently available data.byte
receiveByte()
Reads (receives) the next byte, in case none byte is available, then this method blocks until one is available.byte[]
receiveBytes(int aMaxLength)
Similar toBytesDestination.receiveAllBytes()
though at maximum the amount of data as of the provided length returned.protected void
setConnectionStatus(org.refcodes.component.ConnectionStatus aConnectionStatus)
Sets the connection status.-
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
hasAvailable
-
Methods inherited from interface org.refcodes.io.BytesDestination
receiveBytes
-
Methods inherited from interface org.refcodes.io.BytesReceiver
getInputStream, getInputStream, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, skip
-
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
-
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
skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin
-
-
-
-
Field Detail
-
_automaton
protected AbstractBytesReceiver.ConnectableAutomaton _automaton
-
-
Constructor Detail
-
AbstractBytesReceiver
public AbstractBytesReceiver()
Constructs aAbstractBytesReceiver
with a default sized blocking queue enabling a maximum ofAbstractBytesDestination.DATAGRAM_QUEUE_SIZE
datagrams. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue. In case the queue is filled up, adding elements viaAbstractBytesDestination.pushDatagram(byte)
to the queue is blocked until elements are taken from the queue viareceiveByte()
.
-
AbstractBytesReceiver
public AbstractBytesReceiver(int aCapacity)
Constructs aAbstractBytesReceiver
with a custom sized blocking queue enabling a maximum of datagrams as specified by the capacity parameter. ------------------------------------------------------------------------- Make sure your code fetches the datagrams quick enough to prevent filling up of the queue. In case the queue is filled up, adding elements viaAbstractBytesDestination.pushDatagram(byte)
to the queue is blocked until elements are taken from the queue viareceiveByte()
.- Parameters:
aCapacity
- The capacity of the queue holding the received datagrams.
-
-
Method Detail
-
receiveByte
public byte receiveByte() throws IOException, EOFException
Reads (receives) the next byte, in case none byte is available, then this method blocks until one is available.- Specified by:
receiveByte
in interfaceByteDestination
- Specified by:
receiveByte
in interfaceBytesDestination
- Overrides:
receiveByte
in classAbstractBytesDestination
- Returns:
- The next byte available .
- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.EOFException
- Signals that an end of file or end of stream has been reached unexpectedly during input.
-
receiveAllBytes
public byte[] receiveAllBytes() throws IOException, EOFException
Reads (receives) the all currently available data.- Specified by:
receiveAllBytes
in interfaceBytesDestination
- Specified by:
receiveAllBytes
in interfaceBytesReceiver
- Overrides:
receiveAllBytes
in classAbstractBytesDestination
- Returns:
- The according data.
- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.EOFException
- Signals that an end of file or end of stream has been reached unexpectedly during input.
-
receiveBytes
public byte[] receiveBytes(int aMaxLength) throws IOException, EOFException
Similar toBytesDestination.receiveAllBytes()
though at maximum the amount of data as of the provided length returned.- Specified by:
receiveBytes
in interfaceBytesDestination
- Specified by:
receiveBytes
in interfaceBytesReceiver
- Overrides:
receiveBytes
in classAbstractBytesDestination
- Parameters:
aMaxLength
- The block-size which is not to exceeded by the returned data. A value of -1 specifies to retrieve all available datagrams (same behavior as methodBytesDestination.receiveAllBytes()
.- Returns:
- The according data.
- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.EOFException
- Signals that an end of file or end of stream has been reached unexpectedly during input.
-
available
public int available() throws IOException
Determines the number of available datagram from aDatagramTransmitter
. Use theDatagramDestination
extenison'sDatagramDestination.receive()
method for retrieving available datagrams.- Specified by:
available
in interfaceAvailability
- Specified by:
available
in interfaceSkippable
- Returns:
- The number of datagrams ready to be retrieved .
- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
close
public void close() throws IOException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Throws:
IOException
-
isOpened
public boolean isOpened()
- Specified by:
isOpened
in interfaceorg.refcodes.component.ConnectionStatusAccessor
- Specified by:
isOpened
in interfaceorg.refcodes.component.OpenedAccessor
-
isClosable
public boolean isClosable()
- Specified by:
isClosable
in interfaceorg.refcodes.component.Closable.CloseAutomaton
-
isClosed
public boolean isClosed()
- Specified by:
isClosed
in interfaceorg.refcodes.component.ClosedAccessor
-
getConnectionStatus
public org.refcodes.component.ConnectionStatus getConnectionStatus()
- Specified by:
getConnectionStatus
in interfaceorg.refcodes.component.ConnectionStatusAccessor
-
open
protected void open() throws IOException
Open.- Throws:
IOException
- the open exception
-
setConnectionStatus
protected void setConnectionStatus(org.refcodes.component.ConnectionStatus aConnectionStatus)
Sets the connection status.- Parameters:
aConnectionStatus
- the new connection status
-
isOpenable
protected boolean isOpenable()
Checks if is openable.- Returns:
- true, if is openable
-
-