public class DebugBufferingPacketReader extends java.lang.Object implements MessageReader<NativePacketHeader,NativePacketPayload>
MessageReader which put debugging info to a ring-buffer.| Modifier and Type | Field and Description |
|---|---|
private static int |
DEBUG_MSG_LEN |
private java.lang.String |
lastHeaderPayload |
private static int |
MAX_PACKET_DUMP_LENGTH
Max number of bytes to dump when tracing the protocol
|
private java.util.LinkedList<java.lang.StringBuilder> |
packetDebugBuffer |
private RuntimeProperty<java.lang.Integer> |
packetDebugBufferSize |
private MessageReader<NativePacketHeader,NativePacketPayload> |
packetReader |
private boolean |
packetSequenceReset |
| Constructor and Description |
|---|
DebugBufferingPacketReader(MessageReader<NativePacketHeader,NativePacketPayload> packetReader,
java.util.LinkedList<java.lang.StringBuilder> packetDebugBuffer,
RuntimeProperty<java.lang.Integer> packetDebugBufferSize) |
| Modifier and Type | Method and Description |
|---|---|
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.
|
private NativePacketHeader |
readHeaderLocal(byte prevPacketSeq,
NativePacketHeader hdr) |
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, waitpushMessageListener, readMessage, skipPacket, start, stopAfterNextMessageprivate static final int MAX_PACKET_DUMP_LENGTH
private static final int DEBUG_MSG_LEN
private MessageReader<NativePacketHeader,NativePacketPayload> packetReader
private java.util.LinkedList<java.lang.StringBuilder> packetDebugBuffer
private RuntimeProperty<java.lang.Integer> packetDebugBufferSize
private java.lang.String lastHeaderPayload
private boolean packetSequenceReset
public DebugBufferingPacketReader(MessageReader<NativePacketHeader,NativePacketPayload> packetReader, java.util.LinkedList<java.lang.StringBuilder> packetDebugBuffer, RuntimeProperty<java.lang.Integer> packetDebugBufferSize)
public NativePacketHeader readHeader() throws java.io.IOException
MessageReaderreadHeader in interface MessageReader<NativePacketHeader,NativePacketPayload>MessageHeader of the next messagejava.io.IOException - if an error occurspublic NativePacketHeader probeHeader() throws java.io.IOException
MessageReaderMessageReader.readHeader() return the same header.probeHeader in interface MessageReader<NativePacketHeader,NativePacketPayload>MessageHeader of the next messagejava.io.IOException - if an error occursprivate NativePacketHeader readHeaderLocal(byte prevPacketSeq, NativePacketHeader hdr) throws java.io.IOException
java.io.IOExceptionpublic NativePacketPayload readMessage(java.util.Optional<NativePacketPayload> reuse, NativePacketHeader header) throws java.io.IOException
MessageReaderMessage 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
MessageReaderMessage 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 byte getMessageSequence()
MessageReaderMessageReader.readHeader().getMessageSequence in interface MessageReader<NativePacketHeader,NativePacketPayload>public void resetMessageSequence()
MessageReaderresetMessageSequence in interface MessageReader<NativePacketHeader,NativePacketPayload>public MessageReader<NativePacketHeader,NativePacketPayload> undecorateAll()
MessageReaderundecorateAll in interface MessageReader<NativePacketHeader,NativePacketPayload>MessageReaderpublic MessageReader<NativePacketHeader,NativePacketPayload> undecorate()
MessageReaderundecorate in interface MessageReader<NativePacketHeader,NativePacketPayload>MessageReader