Module org.refcodes.io
Package org.refcodes.io
Class LoopbackDatagramsTransceiver<DATA extends Serializable>
- java.lang.Object
-
- org.refcodes.component.AbstractConnectableAutomaton
-
- org.refcodes.io.AbstractDatagramsReceiver<DATA>
-
- org.refcodes.io.LoopbackDatagramsTransceiver<DATA>
-
- Type Parameters:
DATA
- The type of the datagram to be operated with.
- All Implemented Interfaces:
Flushable
,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.ConnectionComponent<LoopbackDatagramsTransceiver<DATA>>
,org.refcodes.component.ConnectionComponent.ConnectionAutomaton<LoopbackDatagramsTransceiver<DATA>>
,org.refcodes.component.ConnectionOpenable<LoopbackDatagramsTransceiver<DATA>>
,org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<LoopbackDatagramsTransceiver<DATA>>
,org.refcodes.component.ConnectionStatusAccessor
,org.refcodes.component.Flushable
,org.refcodes.component.OpenedAccessor
,Availability
,ConnectionDatagramsReceiver<DATA,LoopbackDatagramsTransceiver<DATA>>
,ConnectionDatagramsTransceiver<DATA,LoopbackDatagramsTransceiver<DATA>>
,ConnectionDatagramsTransmitter<DATA,LoopbackDatagramsTransceiver<DATA>>
,DatagramDestination<DATA>
,DatagramReceiver<DATA>
,DatagramsDestination<DATA>
,DatagramSource<DATA>
,DatagramsReceiver<DATA>
,DatagramsSource<DATA>
,DatagramsTransceiver<DATA>
,DatagramsTransmitter<DATA>
,DatagramTransceiver<DATA>
,DatagramTransmitter<DATA>
,Receivable
,Transmittable
,org.refcodes.mixin.Loggable
public class LoopbackDatagramsTransceiver<DATA extends Serializable> extends AbstractDatagramsReceiver<DATA> implements ConnectionDatagramsTransceiver<DATA,LoopbackDatagramsTransceiver<DATA>>
ALoopbackDatagramsTransceiver
is aDatagramTransceiver
connected directly within the same JVM with anotherLoopbackDatagramsTransceiver
; a "loopback" connection is used for establishing the connection which cannot be accessed outside the JVM or the running machine.
-
-
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
-
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionComponent
org.refcodes.component.ConnectionComponent.ConnectionAutomaton<CON extends Object>, org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON extends Object,B extends org.refcodes.component.ConnectionComponent.ConnectionComponentBuilder<CON,B>>
-
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionOpenable
org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<CON extends Object>, org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON extends Object,B extends org.refcodes.component.ConnectionOpenable.ConnectionOpenBuilder<CON,B>>
-
Nested classes/interfaces inherited from interface org.refcodes.component.ConnectionStatusAccessor
org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusMutator, org.refcodes.component.ConnectionStatusAccessor.ConnectionStatusProperty
-
-
Field Summary
-
Fields inherited from class org.refcodes.io.AbstractDatagramsReceiver
DATAGRAM_QUEUE_SIZE
-
-
Constructor Summary
Constructors Constructor Description LoopbackDatagramsTransceiver()
Instantiates a new loopback transceiver impl.LoopbackDatagramsTransceiver(int aCapacity)
Instantiates a new loopback transceiver impl.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
close()
void
flush()
boolean
isOpenable(LoopbackDatagramsTransceiver<DATA> aLoopbackTransceiver)
void
open(LoopbackDatagramsTransceiver<DATA> aLoopbackTransceiver)
void
pushDatagram(DATA aDatagram)
Pushes a datagram into theLoopbackDatagramsReceiver
.void
transmit(DATA aDatagram)
Writes (sends) a datagram to a listeningDatagramReceiver
.-
Methods inherited from class org.refcodes.io.AbstractDatagramsReceiver
available, pushDatagrams, pushDatagrams, receive, receiveAll
-
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.component.Closable
closeIn, closeQuietly, closeUnchecked
-
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpened
-
Methods inherited from interface org.refcodes.io.DatagramsDestination
receive, receive
-
Methods inherited from interface org.refcodes.io.DatagramsReceiver
receive, receiveAll
-
Methods inherited from interface org.refcodes.io.DatagramsSource
transmitAll
-
Methods inherited from interface org.refcodes.io.DatagramsTransmitter
transmit
-
-
-
-
Method Detail
-
isOpenable
public boolean isOpenable(LoopbackDatagramsTransceiver<DATA> aLoopbackTransceiver)
- Specified by:
isOpenable
in interfaceorg.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<DATA extends Serializable>
-
open
public void open(LoopbackDatagramsTransceiver<DATA> aLoopbackTransceiver) throws IOException
- Specified by:
open
in interfaceorg.refcodes.component.ConnectionOpenable<DATA extends Serializable>
- Throws:
IOException
-
transmit
public void transmit(DATA aDatagram) throws IOException
Writes (sends) a datagram to a listeningDatagramReceiver
.- Specified by:
transmit
in interfaceDatagramSource<DATA extends Serializable>
- Specified by:
transmit
in interfaceDatagramsSource<DATA extends Serializable>
- Parameters:
aDatagram
- The datagram to be pushed to the receivingDatagramSource
.- Throws:
IOException
- Thrown in case opening or accessing an open line (connection, junction, link) caused problems.
-
pushDatagram
public void pushDatagram(DATA aDatagram) throws IOException
Pushes a datagram into theLoopbackDatagramsReceiver
. Them datagrams can be retrieved viaAbstractDatagramsReceiver.receive()
: useAbstractDatagramsReceiver.available()
to test beforehand whether there is a datagram available.- Overrides:
pushDatagram
in classAbstractDatagramsReceiver<DATA extends Serializable>
- Parameters:
aDatagram
- The datagram to be pushed into theLoopbackDatagramsReceiver
; to be retrieved with theAbstractDatagramsReceiver.receive()
method.- Throws:
IOException
- the open exception
-
flush
public void flush() throws IOException
- Specified by:
flush
in interfaceDatagramTransmitter<DATA extends Serializable>
- Specified by:
flush
in interfaceFlushable
- Specified by:
flush
in interfaceorg.refcodes.component.Flushable
- Throws:
IOException
-
close
public void close() throws IOException
- Specified by:
close
in interfaceorg.refcodes.component.Closable
- Overrides:
close
in classAbstractDatagramsReceiver<DATA extends Serializable>
- Throws:
IOException
-
-