org.springframework.messaging.simp.stomp.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.
StompDecoder
| Modifier and Type | Field and Description |
|---|---|
| private final int | |
| private final Queue | |
| private volatile Integer | |
| private final StompDecoder |
| Access | Constructor and Description |
|---|---|
| public | BufferingStompDecoder(StompDecoder
the target decoder to wrap stompDecoder, int the buffer size limit bufferSizeLimit)Create a new |
| Modifier and Type | Method and Description |
|---|---|
| private ByteBuffer | |
| private void | |
| public List | Returns: decoded messages or an empty lista buffer containing new data to decode newBuffer)Decodes one or more STOMP frames from the given |
| public int | |
| public final int | |
| public Integer | getExpectedContentLength()
Get the expected content length of the currently buffered, incomplete STOMP frame. |
| public final StompDecoder |
| bufferSizeLimit | back to summary |
|---|---|
| private final int bufferSizeLimit | |
| chunks | back to summary |
|---|---|
| private final Queue<ByteBuffer> chunks | |
| expectedContentLength | back to summary |
|---|---|
| private volatile Integer expectedContentLength
| |
| stompDecoder | back to summary |
|---|---|
| private final StompDecoder stompDecoder | |
| BufferingStompDecoder | back to summary |
|---|---|
| public BufferingStompDecoder(StompDecoder stompDecoder, int bufferSizeLimit) Create a new
| |
| assembleChunksAndReset | back to summary |
|---|---|
| private ByteBuffer assembleChunksAndReset() | |
| checkBufferLimits | back to summary |
|---|---|
| private void checkBufferLimits() | |
| decode | back to summary |
|---|---|
| public List Decodes one or more STOMP frames from the given 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.
| |
| getBufferSize | back to summary |
|---|---|
| public int getBufferSize() Calculate the current buffer size. | |
| getBufferSizeLimit | back to summary |
|---|---|
| public final int getBufferSizeLimit() Return the configured buffer size limit. | |
| getExpectedContentLength | back to summary |
|---|---|
| public Integer getExpectedContentLength() Get the expected content length of the currently buffered, incomplete STOMP frame.
| |
| getStompDecoder | back to summary |
|---|---|
| public final StompDecoder getStompDecoder() Return the wrapped | |