Module org.refcodes.serial
Package org.refcodes.serial
Class FullDuplexPacketPortDecorator<PM extends PortMetrics>
java.lang.Object
org.refcodes.serial.AbstractPortDecorator<PM>
org.refcodes.serial.FullDuplexPacketPortDecorator<PM>
- Type Parameters:
PM
- The actualPortMetrics
type to use.
- 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<PM>
,org.refcodes.component.ConnectionComponent.ConnectionAutomaton<PM>
,org.refcodes.component.ConnectionOpenable<PM>
,org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton<PM>
,org.refcodes.component.ConnectionStatusAccessor
,org.refcodes.component.Flushable
,org.refcodes.component.LinkComponent
,org.refcodes.component.LinkComponent.LinkAutomaton
,org.refcodes.component.Openable
,org.refcodes.component.Openable.OpenAutomaton
,org.refcodes.component.Openable.OpenBuilder<Port<PM>>
,org.refcodes.component.OpenedAccessor
,org.refcodes.io.Availability
,org.refcodes.io.ByteDestination
,org.refcodes.io.ByteReceiver
,org.refcodes.io.BytesDestination
,org.refcodes.io.ByteSource
,org.refcodes.io.BytesReceiver
,org.refcodes.io.BytesSource
,org.refcodes.io.BytesTransceiver
,org.refcodes.io.BytesTransmitter
,org.refcodes.io.ByteTransceiver
,org.refcodes.io.ByteTransmitter
,org.refcodes.io.Receivable
,org.refcodes.io.Skippable
,org.refcodes.io.TimeoutInputStreamAccessor
,org.refcodes.io.Transmittable
,org.refcodes.mixin.AliasAccessor
,org.refcodes.mixin.InputStreamAccessor
,org.refcodes.mixin.OutputStreamAccessor
,org.refcodes.numerical.CrcAlgorithmAccessor
,org.refcodes.numerical.CrcChecksumValidationModeAccessor
,org.refcodes.numerical.EndianessAccessor
,AcknowledgeMagicBytesAccessor
,AcknowledgeRetryNumberAccessor
,AcknowledgeTimeoutInMsAccessor
,Port<PM>
,PortMetricsAccessor<PM>
,SegmentDestination
,SegmentReceiver
,SegmentSource
,SegmentTransceiver
,SegmentTransmitter
,SequenceNumberAccessor
,SequenceNumberInitValueAccessor
,SequenceNumberWidthAccessor
,SerialReceiver
,SerialTransceiver
,SerialTransmitter
,TransmissionMagicBytesAccessor
public class FullDuplexPacketPortDecorator<PM extends PortMetrics> extends AbstractPortDecorator<PM> implements Port<PM>, AcknowledgeMagicBytesAccessor, AcknowledgeTimeoutInMsAccessor, AcknowledgeRetryNumberAccessor, TransmissionMagicBytesAccessor, SequenceNumberAccessor, SequenceNumberInitValueAccessor, SequenceNumberWidthAccessor, org.refcodes.numerical.CrcAlgorithmAccessor, org.refcodes.numerical.CrcChecksumValidationModeAccessor, org.refcodes.numerical.EndianessAccessor
A
FullDuplexPacketPortDecorator
decorates a Port
for its
usage in Full-Duplex mode by chunking a transmission of Segment
messages (or any transmission finished off by calling AbstractPortDecorator.flush()
) into
small packets.-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
FullDuplexPacketPortDecorator.Builder<PM extends PortMetrics>
Builder for building aFullDuplexPacketPortDecorator
instance.class
FullDuplexPacketPortDecorator.TransmissionSegment
Nested classes/interfaces inherited from interface org.refcodes.serial.AcknowledgeMagicBytesAccessor
AcknowledgeMagicBytesAccessor.AcknowledgeMagicBytesBuilder<B extends AcknowledgeMagicBytesAccessor.AcknowledgeMagicBytesBuilder<B>>, AcknowledgeMagicBytesAccessor.AcknowledgeMagicBytesMutator, AcknowledgeMagicBytesAccessor.AcknowledgeMagicBytesProperty
Nested classes/interfaces inherited from interface org.refcodes.serial.AcknowledgeRetryNumberAccessor
AcknowledgeRetryNumberAccessor.AcknowledgeRetryNumberBuilder<B extends AcknowledgeRetryNumberAccessor.AcknowledgeRetryNumberBuilder<B>>, AcknowledgeRetryNumberAccessor.AcknowledgeRetryNumberMutator, AcknowledgeRetryNumberAccessor.AcknowledgeRetryNumberProperty
Nested classes/interfaces inherited from interface org.refcodes.serial.AcknowledgeTimeoutInMsAccessor
AcknowledgeTimeoutInMsAccessor.AcknowledgeTimeoutInMsBuilder<B extends AcknowledgeTimeoutInMsAccessor.AcknowledgeTimeoutInMsBuilder<B>>, AcknowledgeTimeoutInMsAccessor.AcknowledgeTimeoutInMsMutator, AcknowledgeTimeoutInMsAccessor.AcknowledgeTimeoutInMsProperty
Nested classes/interfaces inherited from interface org.refcodes.mixin.AliasAccessor
org.refcodes.mixin.AliasAccessor.AliasBuilder<B extends org.refcodes.mixin.AliasAccessor.AliasBuilder<B>>, org.refcodes.mixin.AliasAccessor.AliasMutator, org.refcodes.mixin.AliasAccessor.AliasProperty
Nested classes/interfaces inherited from interface org.refcodes.io.BytesReceiver
org.refcodes.io.BytesReceiver.ReceiverInputStream
Nested classes/interfaces inherited from interface org.refcodes.io.BytesTransmitter
org.refcodes.io.BytesTransmitter.TransmitterOutputStream
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
Nested classes/interfaces inherited from interface org.refcodes.numerical.CrcAlgorithmAccessor
org.refcodes.numerical.CrcAlgorithmAccessor.CrcAlgorithmBuilder<B extends org.refcodes.numerical.CrcAlgorithmAccessor.CrcAlgorithmBuilder<B>>, org.refcodes.numerical.CrcAlgorithmAccessor.CrcAlgorithmMutator, org.refcodes.numerical.CrcAlgorithmAccessor.CrcAlgorithmProperty
Nested classes/interfaces inherited from interface org.refcodes.numerical.CrcChecksumValidationModeAccessor
org.refcodes.numerical.CrcChecksumValidationModeAccessor.CrcChecksumValidationModeBuilder<B extends org.refcodes.numerical.CrcChecksumValidationModeAccessor.CrcChecksumValidationModeBuilder<B>>, org.refcodes.numerical.CrcChecksumValidationModeAccessor.CrcChecksumValidationModeMutator, org.refcodes.numerical.CrcChecksumValidationModeAccessor.CrcChecksumValidationModeProperty
Nested classes/interfaces inherited from interface org.refcodes.numerical.EndianessAccessor
org.refcodes.numerical.EndianessAccessor.EndianessBuilder<B extends org.refcodes.numerical.EndianessAccessor.EndianessBuilder<B>>, org.refcodes.numerical.EndianessAccessor.EndianessMutator, org.refcodes.numerical.EndianessAccessor.EndianessProperty
Nested classes/interfaces inherited from interface org.refcodes.component.Flushable
org.refcodes.component.Flushable.FlushBuilder<B extends org.refcodes.component.Flushable.FlushBuilder<B>>
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.LinkComponent
org.refcodes.component.LinkComponent.LinkAutomaton, org.refcodes.component.LinkComponent.LinkComponentBuilder<B extends org.refcodes.component.LinkComponent.LinkComponentBuilder<B>>
Nested classes/interfaces inherited from interface org.refcodes.component.Openable
org.refcodes.component.Openable.OpenAutomaton, org.refcodes.component.Openable.OpenBuilder<B extends org.refcodes.component.Openable.OpenBuilder<B>>
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.mixin.OutputStreamAccessor
org.refcodes.mixin.OutputStreamAccessor.OutputStreamBuilder<B extends org.refcodes.mixin.OutputStreamAccessor.OutputStreamBuilder<?>>, org.refcodes.mixin.OutputStreamAccessor.OutputStreamMutator, org.refcodes.mixin.OutputStreamAccessor.OutputStreamProperty
Nested classes/interfaces inherited from interface org.refcodes.serial.PortMetricsAccessor
PortMetricsAccessor.PortMetricsBuilder<PM extends PortMetrics,B extends PortMetricsAccessor.PortMetricsBuilder<PM,B>>, PortMetricsAccessor.PortMetricsMutator<PM extends PortMetrics>, PortMetricsAccessor.PortMetricsProperty<PM extends PortMetrics>
Nested classes/interfaces inherited from interface org.refcodes.serial.SequenceNumberAccessor
SequenceNumberAccessor.SequenceNumberBuilder<B extends SequenceNumberAccessor.SequenceNumberBuilder<B>>, SequenceNumberAccessor.SequenceNumberMutator, SequenceNumberAccessor.SequenceNumberProperty
Nested classes/interfaces inherited from interface org.refcodes.serial.SequenceNumberInitValueAccessor
SequenceNumberInitValueAccessor.SequenceNumberInitValueBuilder<B extends SequenceNumberInitValueAccessor.SequenceNumberInitValueBuilder<B>>, SequenceNumberInitValueAccessor.SequenceNumberInitValueMutator, SequenceNumberInitValueAccessor.SequenceNumberInitValueProperty
Nested classes/interfaces inherited from interface org.refcodes.serial.SequenceNumberWidthAccessor
SequenceNumberWidthAccessor.SequenceNumberWidthBuilder<B extends SequenceNumberWidthAccessor.SequenceNumberWidthBuilder<B>>, SequenceNumberWidthAccessor.SequenceNumberWidthMutator, SequenceNumberWidthAccessor.SequenceNumberWidthProperty
Nested classes/interfaces inherited from interface org.refcodes.io.TimeoutInputStreamAccessor
org.refcodes.io.TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<B extends org.refcodes.io.TimeoutInputStreamAccessor.TimeoutInputStreamBuilder<?>>, org.refcodes.io.TimeoutInputStreamAccessor.TimeoutInputStreamMutator, org.refcodes.io.TimeoutInputStreamAccessor.TimeoutInputStreamProperty
Nested classes/interfaces inherited from interface org.refcodes.serial.TransmissionMagicBytesAccessor
TransmissionMagicBytesAccessor.TransmissionMagicBytesBuilder<B extends TransmissionMagicBytesAccessor.TransmissionMagicBytesBuilder<B>>, TransmissionMagicBytesAccessor.TransmissionMagicBytesMutator, TransmissionMagicBytesAccessor.TransmissionMagicBytesProperty
-
Field Summary
Fields inherited from class org.refcodes.serial.AbstractPortDecorator
_port
-
Constructor Summary
Constructors Constructor Description FullDuplexPacketPortDecorator(Port<PM> aPort)
FullDuplexPacketPortDecorator(Port<PM> aPort, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberInitValue, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberInitValue, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)
FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)
FullDuplexPacketPortDecorator(Port<PM> aPort, TransmissionMetrics aTransmissionMetrics)
FullDuplexPacketPortDecorator(Port<PM> aPort, TransmissionMetrics aTransmissionMetrics, ExecutorService aExecutorService)
-
Method Summary
Modifier and Type Method Description int
available()
Returns the number of bytes which can be read directly e.g. which are already been stored in an internal buffer.static <PM extends PortMetrics>
FullDuplexPacketPortDecorator.Builder<PM>builder()
Creates builder to buildFullDuplexPacketPortDecorator
.<SEGMENT extends Segment>
SegmentResult<SEGMENT>doTransmitSegment(SEGMENT aSegment)
<SEGMENT extends Segment>
voiddoTransmitSegment(SEGMENT aSegment, SegmentConsumer<SEGMENT> aSegmentConsumer)
byte[]
getAcknowledgeMagicBytes()
Retrieves the magic bytes from the acknowledge magic bytes property.int
getAcknowledgeRetryNumber()
Retrieves the number of retries from the acknowledge retry number.long
getAcknowledgeTimeoutInMs()
The acknowledge timeout attribute in milliseconds.org.refcodes.numerical.CrcAlgorithm
getCrcAlgorithm()
org.refcodes.numerical.ChecksumValidationMode
getCrcChecksumValidationMode()
org.refcodes.numerical.Endianess
getEndianess()
int
getSequenceNumber()
Retrieves the sequence number from the sequence number property.int
getSequenceNumberInitValue()
Retrieves the sequence number initial value from the sequence number initial value property.int
getSequenceNumberWidth()
Retrieves the sequence number width (in bytes) from the sequence number width (in bytes) property.byte[]
getTransmissionMagicBytes()
Retrieves the magic bytes from the transmission magic bytes property.<SEGMENT extends Segment>
SegmentResult<SEGMENT>onReceiveSegment(SEGMENT aSegment)
Asynchronously receives aSegment
'sSequence
data (does not block this thread) and updates theSegment
by invokingSegment.fromTransmission(Sequence)
.<SEGMENT extends Segment>
voidonReceiveSegment(SEGMENT aSegment, SegmentConsumer<SEGMENT> aSegmentConsumer)
Asynchronously receives aSegment
'sSequence
data (does not block this thread) and updates theSegment
by invokingSegment.fromTransmission(Sequence)
, passing the result to the callbackSegmentConsumer.onSegment(Segment)
.byte
receiveByte()
<SEGMENT extends Segment>
voidreceiveSegment(SEGMENT aSegment)
Receives aSegment
(and blocks this thread) till all it'sSequence
data has been received and updates theSegment
by invokingSegment.fromTransmission(Sequence)
.<SEGMENT extends Segment>
voidreceiveSegmentWithin(long aTimeoutInMs, SEGMENT aSegment)
Receives aSegment
(and blocks this thread) till all it'sSequence
data has been received and updates theSegment
by invokingSegment.fromTransmission(Sequence)
.void
transmitBytes(byte[] aBytes, int aOffset, int aLength)
<SEGMENT extends Segment>
voidtransmitSegment(SEGMENT aSegment)
Transmits aAllocSectionDecoratorSegment
(and blocks this thread) till all it'sSequence
data (as ofAbstractLengthDecoratorSegment.toTransmission()
) has been sent.void
transmitSequence(Sequence aSequence)
Sends the number of bytes specified.Methods inherited from class org.refcodes.serial.AbstractPortDecorator
close, closeIn, closeQuietly, closeUnchecked, flush, flushUnchecked, getAlias, getConnectionStatus, getInputStream, getInputStream, getOutputStream, getPortMetrics, hasAvailable, isClosable, isClosed, isFlushable, isOpenable, isOpenable, isOpened, open, open, openUnchecked, receiveAllBytes, receiveBytes, receiveBytes, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, receiveSequence, receiveSequenceWithin, skip, skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin, transmitSequence, withOpen, withOpenUnchecked
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.refcodes.mixin.AliasAccessor
getAlias
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, receiveAllBytes, receiveBytesWithin, receiveBytesWithin, receiveByteWithin, skip
Methods inherited from interface org.refcodes.io.BytesSource
transmitByte
Methods inherited from interface org.refcodes.io.BytesTransmitter
getOutputStream
Methods inherited from interface org.refcodes.component.Closable
closeIn, closeQuietly, closeUnchecked
Methods inherited from interface org.refcodes.component.Closable.CloseAutomaton
isClosable
Methods inherited from interface org.refcodes.component.ClosedAccessor
isClosed
Methods inherited from interface org.refcodes.component.ConnectionOpenable
open, openUnchecked
Methods inherited from interface org.refcodes.component.ConnectionOpenable.ConnectionOpenAutomaton
isOpenable
Methods inherited from interface org.refcodes.component.ConnectionStatusAccessor
getConnectionStatus, isOpened
Methods inherited from interface org.refcodes.component.Flushable
flushUnchecked, isFlushable
Methods inherited from interface org.refcodes.component.Openable
openUnchecked
Methods inherited from interface org.refcodes.component.Openable.OpenAutomaton
isOpenable
Methods inherited from interface org.refcodes.component.Openable.OpenBuilder
withOpen, withOpenUnchecked
Methods inherited from interface org.refcodes.serial.PortMetricsAccessor
getPortMetrics
Methods inherited from interface org.refcodes.serial.SegmentTransmitter
flush
Methods inherited from interface org.refcodes.serial.SerialReceiver
close, open, receiveBytes, receiveSequence, receiveSequenceWithin
Methods inherited from interface org.refcodes.serial.SerialTransmitter
flush, transmitAllBytes, transmitSequence
Methods inherited from interface org.refcodes.io.Skippable
skipAvailable, skipAvailableExcept, skipAvailableTill, skipAvailableTillSilenceFor, skipAvailableTillSilenceFor, skipAvailableWithin, skipAvailableWithin
-
Constructor Details
-
FullDuplexPacketPortDecorator
- Parameters:
aPort
- ThePort
to be decorated.
-
FullDuplexPacketPortDecorator
Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aTransmissionMetrics
- TheTransmissionMetrics
to be used for configuring this instance.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aAcknowledgeRetryNumber
- The number of retries waiting for an ACK from the return channel.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aAcknowledgeRetryNumber
- The number of retries waiting for an ACK from the return channel.aAcknowledgeTimeoutInMs
- The timeout in milliseconds to pend till the next retry.aSequenceNumberWidth
- The width in bytes to be used for the binary sequence number representation.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberInitValue, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aAcknowledgeRetryNumber
- The number of retries waiting for an ACK from the return channel.aAcknowledgeTimeoutInMs
- The timeout in milliseconds to pend till the next retry.aSequenceNumberInitValue
- The initialization value for the sequence number counter.aSequenceNumberWidth
- The width in bytes to be used for the binary sequence number representation.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.
-
FullDuplexPacketPortDecorator
- Parameters:
aPort
- ThePort
to be decorated.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, TransmissionMetrics aTransmissionMetrics, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aTransmissionMetrics
- TheTransmissionMetrics
to be used for configuring this instance.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aAcknowledgeRetryNumber
- The number of retries waiting for an ACK from the return channel.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aAcknowledgeRetryNumber
- The number of retries waiting for an ACK from the return channel.aAcknowledgeTimeoutInMs
- The timeout in milliseconds to pend till the next retry.aSequenceNumberWidth
- The width in bytes to be used for the binary sequence number representation.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
FullDuplexPacketPortDecorator
public FullDuplexPacketPortDecorator(Port<PM> aPort, org.refcodes.numerical.Endianess aEndianess, byte[] aTransmissionMagicBytes, byte[] aAcknowledgeMagicBytes, int aAcknowledgeRetryNumber, long aAcknowledgeTimeoutInMs, int aSequenceNumberInitValue, int aSequenceNumberWidth, org.refcodes.numerical.CrcAlgorithm aCrcAlgorithm, org.refcodes.numerical.ChecksumValidationMode aCrcChecksumValidationMode, ExecutorService aExecutorService)Decorates the givenPort
with full duplexSegment
multiplexer functionality as of the given arguments.- Parameters:
aPort
- ThePort
to be decorated.aEndianess
- TheEndianess
to use when calculating the CRC checksum.aTransmissionMagicBytes
- The magic bytes identifying a regular transmission (as oftransmitSegment(Segment)
or the like).aAcknowledgeMagicBytes
- The ACK character to be used by the return channel to transmit an ACK (acknowledge) response after successful receiving a transmission.aAcknowledgeRetryNumber
- The number of retries waiting for an ACK from the return channel.aAcknowledgeTimeoutInMs
- The timeout in milliseconds to pend till the next retry.aSequenceNumberInitValue
- The initialization value for the sequence number counter.aSequenceNumberWidth
- The width in bytes to be used for the binary sequence number representation.aCrcAlgorithm
- TheCrcAlgorithm
to be used for CRC checksum calculation.aCrcChecksumValidationMode
- The mode of operation when validating provided CRC checksums against calculated ones.aExecutorService
- TheExecutorService
to be used when creatingThread
instances for handling input and output data simultaneously.
-
-
Method Details
-
available
Returns the number of bytes which can be read directly e.g. which are already been stored in an internal buffer. May return (0 or) a value less than 0 (-1) when it is not supported. Similar toInputStream.available()
: "Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream. The next invocation might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes. Note that while some implementations of InputStream will return the total number of bytes in the stream, many will not. It is never correct to use the return value of this method to allocate a buffer intended to hold all data in this stream. A subclass' implementation of this method may choose to throw an IOException if this input stream has been closed by invoking the close() method. The available method for class InputStream always returns 0. This method should be overridden by subclasses."- Specified by:
available
in interfaceorg.refcodes.io.Availability
- Specified by:
available
in interfaceSerialReceiver
- Specified by:
available
in interfaceorg.refcodes.io.Skippable
- Overrides:
available
in classAbstractPortDecorator<PM extends PortMetrics>
- Returns:
- The number of available bytes: An estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking or 0 when it reaches the end of the input stream. Throws:
- Throws:
IOException
- - if an I/O error occurs.
-
getAcknowledgeMagicBytes
public byte[] getAcknowledgeMagicBytes()Retrieves the magic bytes from the acknowledge magic bytes property.- Specified by:
getAcknowledgeMagicBytes
in interfaceAcknowledgeMagicBytesAccessor
- Returns:
- The magic bytes stored by the acknowledge magic bytes property.
-
getAcknowledgeRetryNumber
public int getAcknowledgeRetryNumber()Retrieves the number of retries from the acknowledge retry number. A acknowledge retry number is the overall number of retries to use when counting retries.- Specified by:
getAcknowledgeRetryNumber
in interfaceAcknowledgeRetryNumberAccessor
- Returns:
- The number of retries stored by the acknowledge retry number.
-
getAcknowledgeTimeoutInMs
public long getAcknowledgeTimeoutInMs()The acknowledge timeout attribute in milliseconds.- Specified by:
getAcknowledgeTimeoutInMs
in interfaceAcknowledgeTimeoutInMsAccessor
- Returns:
- An integer with the timeout in milliseconds.
-
getEndianess
public org.refcodes.numerical.Endianess getEndianess()- Specified by:
getEndianess
in interfaceorg.refcodes.numerical.EndianessAccessor
-
getSequenceNumberInitValue
public int getSequenceNumberInitValue()Retrieves the sequence number initial value from the sequence number initial value property.- Specified by:
getSequenceNumberInitValue
in interfaceSequenceNumberInitValueAccessor
- Returns:
- The sequence number initial value stored by the sequence number initial value property.
-
getSequenceNumberWidth
public int getSequenceNumberWidth()Retrieves the sequence number width (in bytes) from the sequence number width (in bytes) property.- Specified by:
getSequenceNumberWidth
in interfaceSequenceNumberWidthAccessor
- Returns:
- The sequence number width (in bytes) stored by the sequence number width (in bytes) property.
-
getTransmissionMagicBytes
public byte[] getTransmissionMagicBytes()Retrieves the magic bytes from the transmission magic bytes property.- Specified by:
getTransmissionMagicBytes
in interfaceTransmissionMagicBytesAccessor
- Returns:
- The magic bytes stored by the transmission magic bytes property.
-
getCrcChecksumValidationMode
public org.refcodes.numerical.ChecksumValidationMode getCrcChecksumValidationMode()- Specified by:
getCrcChecksumValidationMode
in interfaceorg.refcodes.numerical.CrcChecksumValidationModeAccessor
-
getCrcAlgorithm
public org.refcodes.numerical.CrcAlgorithm getCrcAlgorithm()- Specified by:
getCrcAlgorithm
in interfaceorg.refcodes.numerical.CrcAlgorithmAccessor
-
getSequenceNumber
public int getSequenceNumber()Retrieves the sequence number from the sequence number property.- Specified by:
getSequenceNumber
in interfaceSequenceNumberAccessor
- Returns:
- The sequence number stored by the sequence number property.
-
receiveByte
- Specified by:
receiveByte
in interfaceorg.refcodes.io.ByteDestination
- Specified by:
receiveByte
in interfaceorg.refcodes.io.BytesDestination
- Specified by:
receiveByte
in interfaceSerialReceiver
- Overrides:
receiveByte
in classAbstractPortDecorator<PM extends PortMetrics>
- Throws:
IOException
-
transmitSequence
Sends the number of bytes specified.- Specified by:
transmitSequence
in interfaceSerialTransmitter
- Overrides:
transmitSequence
in classAbstractPortDecorator<PM extends PortMetrics>
- Parameters:
aSequence
- TheSequence
containing the data to be send.- Throws:
IOException
- thrown in case of I/O issues (e.g. a timeout) while sending
-
transmitBytes
- Specified by:
transmitBytes
in interfaceorg.refcodes.io.BytesSource
- Specified by:
transmitBytes
in interfaceorg.refcodes.io.BytesTransmitter
- Specified by:
transmitBytes
in interfaceSerialTransmitter
- Overrides:
transmitBytes
in classAbstractPortDecorator<PM extends PortMetrics>
- Throws:
IOException
-
transmitSegment
Transmits aAllocSectionDecoratorSegment
(and blocks this thread) till all it'sSequence
data (as ofAbstractLengthDecoratorSegment.toTransmission()
) has been sent.- Specified by:
transmitSegment
in interfaceSegmentSource
- Specified by:
transmitSegment
in interfaceSerialTransceiver
- Specified by:
transmitSegment
in interfaceSerialTransmitter
- Overrides:
transmitSegment
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass used.- Parameters:
aSegment
- TheAllocSectionDecoratorSegment
's data to be sent with.- Throws:
IOException
- thrown in case of I/O issues (e.g. a timeout) while sending.
-
doTransmitSegment
public <SEGMENT extends Segment> SegmentResult<SEGMENT> doTransmitSegment(SEGMENT aSegment) throws IOException- Specified by:
doTransmitSegment
in interfaceSegmentTransmitter
- Overrides:
doTransmitSegment
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass used.- Parameters:
aSegment
- TheSegment
to be (re-)initialized with the received data.- Returns:
- The
SegmentResult
which provides the result (asynchronously). - Throws:
IOException
- thrown in case of I/O issues (e.g. a closed connection) while sending.
-
doTransmitSegment
public <SEGMENT extends Segment> void doTransmitSegment(SEGMENT aSegment, SegmentConsumer<SEGMENT> aSegmentConsumer) throws IOException- Specified by:
doTransmitSegment
in interfaceSegmentTransmitter
- Overrides:
doTransmitSegment
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass used.- Parameters:
aSegment
- TheSegment
to be (re-)initialized with the received data.aSegmentConsumer
- The callback asynchronously invoked upon having received theSegment
.- Throws:
IOException
- thrown in case of I/O issues (e.g. a closed connection) while sending.
-
onReceiveSegment
public <SEGMENT extends Segment> SegmentResult<SEGMENT> onReceiveSegment(SEGMENT aSegment) throws IOExceptionAsynchronously receives aSegment
'sSequence
data (does not block this thread) and updates theSegment
by invokingSegment.fromTransmission(Sequence)
. The result is provided by the returnedSegmentResult
instance providing the (asynchronously) (re-)initialized providedSegment
instance.- Specified by:
onReceiveSegment
in interfaceSegmentReceiver
- Overrides:
onReceiveSegment
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass used.- Parameters:
aSegment
- TheSegment
to be (re-)initialized with the received data.- Returns:
- The
SegmentResult
which provides the result (asynchronously). - Throws:
IOException
- thrown in case of I/O issues (e.g. a closed connection) while receiving.
-
onReceiveSegment
public <SEGMENT extends Segment> void onReceiveSegment(SEGMENT aSegment, SegmentConsumer<SEGMENT> aSegmentConsumer) throws IOExceptionAsynchronously receives aSegment
'sSequence
data (does not block this thread) and updates theSegment
by invokingSegment.fromTransmission(Sequence)
, passing the result to the callbackSegmentConsumer.onSegment(Segment)
.- Specified by:
onReceiveSegment
in interfaceSegmentReceiver
- Overrides:
onReceiveSegment
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass of implementingSegment
types.- Parameters:
aSegment
- TheSegment
to be (re-)initialized with the received data.aSegmentConsumer
- The callback asynchronously invoked upon having received theSegment
.- Throws:
IOException
- thrown in case of I/O issues (e.g. a closed connection) while receiving.
-
receiveSegment
public <SEGMENT extends Segment> void receiveSegment(SEGMENT aSegment) throws TransmissionException, IOExceptionReceives aSegment
(and blocks this thread) till all it'sSequence
data has been received and updates theSegment
by invokingSegment.fromTransmission(Sequence)
. This method blocks till all bytes are read.- Specified by:
receiveSegment
in interfaceSegmentDestination
- Specified by:
receiveSegment
in interfaceSerialReceiver
- Specified by:
receiveSegment
in interfaceSerialTransceiver
- Overrides:
receiveSegment
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass of implementingSegment
types.- Parameters:
aSegment
- TheSegment
to be (re-)initialized with the received data.- Throws:
TransmissionException
- Thrown in case the received data cannot be used to (re-)initialize the givenSegment
.IOException
- thrown in case of I/O issues (e.g. a timeout) while receiving.
-
receiveSegmentWithin
public <SEGMENT extends Segment> void receiveSegmentWithin(long aTimeoutInMs, SEGMENT aSegment) throws TransmissionException, IOExceptionReceives aSegment
(and blocks this thread) till all it'sSequence
data has been received and updates theSegment
by invokingSegment.fromTransmission(Sequence)
. This method blocks till all bytes are read or the timeout has been reached.- Specified by:
receiveSegmentWithin
in interfaceSegmentReceiver
- Specified by:
receiveSegmentWithin
in interfaceSerialReceiver
- Overrides:
receiveSegmentWithin
in classAbstractPortDecorator<PM extends PortMetrics>
- Type Parameters:
SEGMENT
- TheSegment
type describing theSegment
subclass of implementingSegment
types.- Parameters:
aTimeoutInMs
- The default timeout for read operations not explicitly called with a timeout argument. With a value of -1 timeout handling is disabled (blocking mode) or a technical timeout occurs (implementation depended).aSegment
- TheSegment
to be (re-)initialized with the received data.- Throws:
TransmissionException
- Thrown in case the received data cannot be used to (re-)initialize the givenSegment
.IOException
- thrown in case of I/O issues (e.g. a timeout) while receiving.
-
builder
Creates builder to buildFullDuplexPacketPortDecorator
.- Type Parameters:
PM
- The actualPortMetrics
type to use.- Returns:
- The accordingly created builder.
-