public class TimeTrackingPacketReader extends java.lang.Object implements MessageReader<NativePacketHeader,NativePacketPayload>, PacketReceivedTimeHolder
MessageReader
which tracks the last time a packet was received.Constructor and Description |
---|
TimeTrackingPacketReader(MessageReader<NativePacketHeader,NativePacketPayload> messageReader) |
Modifier and Type | Method and Description |
---|---|
long |
getLastPacketReceivedTime() |
byte |
getMessageSequence()
Get last message sequence number, as it was stored by
MessageReader.readHeader() . |
NativePacketHeader |
probeHeader()
Read the next message header from server, possibly blocking indefinitely until the message is received,
and cache it so that the next
MessageReader.readHeader() return the same header. |
NativePacketPayload |
probeMessage(java.util.Optional<NativePacketPayload> reuse,
NativePacketHeader header)
Read message from server into to the given
Message instance or into the new one if not present
and cache it so that the next MessageReader.readMessage(Optional, MessageHeader) return the same message. |
NativePacketHeader |
readHeader()
Read the next message header from server, possibly blocking indefinitely until the message is received.
|
NativePacketPayload |
readMessage(java.util.Optional<NativePacketPayload> reuse,
NativePacketHeader header)
Read message from server into to the given
Message instance or into the new one if not present. |
void |
resetMessageSequence()
Set stored message sequence number to 0.
|
MessageReader<NativePacketHeader,NativePacketPayload> |
undecorate()
Return the previous MessageReader instance from the decorators chain or the current MessageReader
if it is the first entry in a chain.
|
MessageReader<NativePacketHeader,NativePacketPayload> |
undecorateAll()
Return a MessageReader instance free of decorators.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
pushMessageListener, readMessage, start, stopAfterNextMessage
public TimeTrackingPacketReader(MessageReader<NativePacketHeader,NativePacketPayload> messageReader)
public NativePacketHeader readHeader() throws java.io.IOException
MessageReader
readHeader
in interface MessageReader<NativePacketHeader,NativePacketPayload>
MessageHeader
of the next messagejava.io.IOException
- if an error occurspublic NativePacketHeader probeHeader() throws java.io.IOException
MessageReader
MessageReader.readHeader()
return the same header.probeHeader
in interface MessageReader<NativePacketHeader,NativePacketPayload>
MessageHeader
of the next messagejava.io.IOException
- if an error occurspublic NativePacketPayload readMessage(java.util.Optional<NativePacketPayload> reuse, NativePacketHeader header) throws java.io.IOException
MessageReader
Message
instance or into the new one if not present.
For asynchronous channel it synchronously reads the next message in the stream, blocking until the message is read fully.
Could throw CJCommunicationsException wrapping an IOException
during read or parsereadMessage
in interface MessageReader<NativePacketHeader,NativePacketPayload>
reuse
- Message
object to reuse. May be ignored by implementation.header
- MessageHeader
instanceMessage
instancejava.io.IOException
- if an error occurspublic NativePacketPayload probeMessage(java.util.Optional<NativePacketPayload> reuse, NativePacketHeader header) throws java.io.IOException
MessageReader
Message
instance or into the new one if not present
and cache it so that the next MessageReader.readMessage(Optional, MessageHeader)
return the same message.
For asynchronous channel it synchronously reads the next message in the stream, blocking until the message is read fully.
Could throw CJCommunicationsException wrapping an IOException
during read or parseprobeMessage
in interface MessageReader<NativePacketHeader,NativePacketPayload>
reuse
- Message
object to reuse. May be ignored by implementation.header
- MessageHeader
instanceMessage
instancejava.io.IOException
- if an error occurspublic long getLastPacketReceivedTime()
getLastPacketReceivedTime
in interface PacketReceivedTimeHolder
public byte getMessageSequence()
MessageReader
MessageReader.readHeader()
.getMessageSequence
in interface MessageReader<NativePacketHeader,NativePacketPayload>
public void resetMessageSequence()
MessageReader
resetMessageSequence
in interface MessageReader<NativePacketHeader,NativePacketPayload>
public MessageReader<NativePacketHeader,NativePacketPayload> undecorateAll()
MessageReader
undecorateAll
in interface MessageReader<NativePacketHeader,NativePacketPayload>
MessageReader
public MessageReader<NativePacketHeader,NativePacketPayload> undecorate()
MessageReader
undecorate
in interface MessageReader<NativePacketHeader,NativePacketPayload>
MessageReader