DATA
- the generic typeFlushable
, 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.Flushable
, org.refcodes.component.OpenedAccessor
, Availability
, DatagramDestination<DATA>
, DatagramReceiver<DATA>
, DatagramsDestination<DATA>
, DatagramSource<DATA>
, DatagramsReceiver<DATA>
, DatagramsSource<DATA>
, DatagramsTransceiver<DATA>
, DatagramsTransmitter<DATA>
, DatagramTransceiver<DATA>
, DatagramTransmitter<DATA>
, Receivable
, Transmittable
public class BidirectionalStreamTransceiver<DATA extends Serializable> extends Object implements DatagramsTransceiver<DATA>
org.refcodes.component.Closable.CloseAutomaton, org.refcodes.component.Closable.CloseBuilder<B extends org.refcodes.component.Closable.CloseBuilder<B>>
org.refcodes.component.ClosedAccessor.ClosedMutator, org.refcodes.component.ClosedAccessor.ClosedProperty
org.refcodes.component.ConnectableComponent.ConnectableAutomaton
Constructor | Description |
---|---|
BidirectionalStreamTransceiver(InputStream aInputStream,
OutputStream aOutputStream) |
Instantiates a new bidirectional stream transceiver impl.
|
Modifier and Type | Method | Description |
---|---|---|
int |
available() |
Determines the number of available datagram from a
DatagramTransmitter . |
void |
close() |
|
void |
flush() |
|
org.refcodes.component.ConnectionStatus |
getConnectionStatus() |
|
boolean |
isClosable() |
|
boolean |
isClosed() |
|
boolean |
isOpened() |
|
DATA |
receive() |
Reads (receives) the next datagram passed from a
DatagramTransmitter counterpart. |
DATA[] |
receiveAll() |
Reads (receives) the all currently available data.
|
void |
transmit(DATA aDatagram) |
Writes (sends) a datagram to a listening
DatagramReceiver . |
void |
transmit(DATA[] aDatagram,
int aOffset,
int aLength) |
Write datagrams.
|
void |
transmitAll(DATA[] aDatagram) |
Writes (sends) a datagram block to a listening
DatagramReceiver
or DatagramsReceiver . |
hasAvailable
closeIn, closeQuietly, closeUnchecked
receive
receive
public BidirectionalStreamTransceiver(InputStream aInputStream, OutputStream aOutputStream) throws IOException
aInputStream
- the input streamaOutputStream
- the output streamIOException
- the open exceptionpublic boolean isClosed()
isClosed
in interface org.refcodes.component.ClosedAccessor
public boolean isOpened()
isOpened
in interface org.refcodes.component.ConnectionStatusAccessor
isOpened
in interface org.refcodes.component.OpenedAccessor
public int available() throws IOException
DatagramTransmitter
. Use the DatagramDestination
extenison's DatagramDestination.receive()
method for retrieving
available datagrams.available
in interface Availability
IOException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public DATA[] receiveAll() throws IOException
receiveAll
in interface DatagramsDestination<DATA extends Serializable>
receiveAll
in interface DatagramsReceiver<DATA extends Serializable>
DatagramsTransmitter
or DatagramReceiver
counterpart.IOException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public org.refcodes.component.ConnectionStatus getConnectionStatus()
getConnectionStatus
in interface org.refcodes.component.ConnectionStatusAccessor
public void close() throws IOException
close
in interface org.refcodes.component.Closable
IOException
public DATA receive() throws IOException
DatagramTransmitter
counterpart. In case none datagram is
available, then this method blocks until one is available. To prevent
blocking, use the DatagramReceiver
extension's
Availability.available()
method to test beforehand whether a
byte is available (in a multi-threaded usage scenario,
Availability.available()
is not a reliable indicator whether
this method will block or not). When a Thread
is waiting for a
datagram to be read and Thread.interrupt()
is being called, then
the operation is aborted and an InterruptedException
is thrown.receive
in interface DatagramDestination<DATA extends Serializable>
receive
in interface DatagramsDestination<DATA extends Serializable>
DatagramTransmitter
counterpart.IOException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public void transmitAll(DATA[] aDatagram) throws IOException
DatagramReceiver
or DatagramsReceiver
.transmitAll
in interface DatagramsSource<DATA extends Serializable>
aDatagram
- The datagram to be pushed to the receiving
DatagramReceiver
or DatagramsReceiver
.IOException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public void transmit(DATA[] aDatagram, int aOffset, int aLength) throws IOException
transmit
in interface DatagramsSource<DATA extends Serializable>
transmit
in interface DatagramsTransmitter<DATA extends Serializable>
aDatagram
- the datagramaOffset
- the offsetaLength
- the lengthIOException
- the open exceptionpublic void transmit(DATA aDatagram) throws IOException
DatagramReceiver
.transmit
in interface DatagramSource<DATA extends Serializable>
transmit
in interface DatagramsSource<DATA extends Serializable>
aDatagram
- The datagram to be pushed to the receiving
DatagramSource
.IOException
- Thrown in case opening or accessing an open line
(connection, junction, link) caused problems.public void flush() throws IOException
flush
in interface DatagramTransmitter<DATA extends Serializable>
flush
in interface Flushable
flush
in interface org.refcodes.component.Flushable
IOException
public boolean isClosable()
isClosable
in interface org.refcodes.component.Closable.CloseAutomaton
Copyright © 2021. All rights reserved.