public class StompDecoder
extends java.lang.Object
ByteBuffer
.
An attempt is made to read all complete STOMP frames from the buffer, which could be zero, one, or more. If there is any left-over content, i.e. an incomplete STOMP frame, at the end the buffer is reset to point to the beginning of the partial content. The caller is then responsible for dealing with that incomplete content by buffering until there is more input available.
Constructor and Description |
---|
StompDecoder() |
Modifier and Type | Method and Description |
---|---|
java.util.List<Message<byte[]>> |
decode(java.nio.ByteBuffer byteBuffer)
Decodes one or more STOMP frames from the given
ByteBuffer into a
list of Messages . |
java.util.List<Message<byte[]>> |
decode(java.nio.ByteBuffer byteBuffer,
MultiValueMap<java.lang.String,java.lang.String> partialMessageHeaders)
Decodes one or more STOMP frames from the given
buffer and returns
a list of Messages . |
MessageHeaderInitializer |
getHeaderInitializer()
Return the configured
MessageHeaderInitializer , if any. |
void |
setHeaderInitializer(MessageHeaderInitializer headerInitializer)
Configure a
MessageHeaderInitializer to apply to the headers of
Messages from decoded STOMP frames. |
protected void |
skipLeadingEol(java.nio.ByteBuffer byteBuffer)
Skip one ore more EOL characters at the start of the given ByteBuffer.
|
public void setHeaderInitializer(@Nullable MessageHeaderInitializer headerInitializer)
MessageHeaderInitializer
to apply to the headers of
Messages
from decoded STOMP frames.@Nullable public MessageHeaderInitializer getHeaderInitializer()
MessageHeaderInitializer
, if any.public java.util.List<Message<byte[]>> decode(java.nio.ByteBuffer byteBuffer)
ByteBuffer
into a
list of Messages
. If the input buffer contains partial STOMP frame
content, or additional content with a partial STOMP frame, the buffer is
reset and null
is returned.byteBuffer
- the buffer to decode the STOMP frame fromStompConversionException
- raised in case of decoding issuespublic java.util.List<Message<byte[]>> decode(java.nio.ByteBuffer byteBuffer, @Nullable MultiValueMap<java.lang.String,java.lang.String> partialMessageHeaders)
buffer
and returns
a list of Messages
.
If the given ByteBuffer contains only partial STOMP frame content and no complete STOMP frames, an empty list is returned, and the buffer is reset to to where it was.
If the buffer contains one ore more STOMP frames, those are returned and the buffer reset to point to the beginning of the unused partial content.
The output partialMessageHeaders map is used to store successfully parsed headers in case of partial content. The caller can then check if a "content-length" header was read, which helps to determine how much more content is needed before the next attempt to decode.
byteBuffer
- the buffer to decode the STOMP frame frompartialMessageHeaders
- an empty output map that will store the last
successfully parsed partialMessageHeaders in case of partial message content
in cases where the partial buffer ended with a partial STOMP frameStompConversionException
- raised in case of decoding issuesprotected void skipLeadingEol(java.nio.ByteBuffer byteBuffer)