public class BufferingStompDecoder
An extension of StompDecoder
that buffers content remaining in the input ByteBuffer after the parent
class has read all (complete) STOMP frames from it. The remaining content
represents an incomplete STOMP frame. When called repeatedly with additional
data, the decode method returns one or more messages or, if there is not
enough data still, continues to buffer.
A single instance of this decoder can be invoked repeatedly to read all
messages from a single stream (e.g. WebSocket session) as long as decoding
does not fail. If there is an exception, StompDecoder instance should not
be used any more as its internal state is not guaranteed to be consistent.
It is expected that the underlying session is closed at that point.
public java.util.List<Message<byte>> decode(java.nio.ByteBuffer newBuffer)
Decodes one or more STOMP frames from the given ByteBuffer into a
list of Messages.
If there was enough data to parse a "content-length" header, then the
value is used to determine how much more data is needed before a new
attempt to decode is made.
If there was not enough data to parse the "content-length", or if there
is "content-length" header, every subsequent call to decode attempts to
parse again with all available data. Therefore the presence of a "content-length"
header helps to optimize the decoding of large messages.
newBuffer - a buffer containing new data to decode