クラス BufferingStompDecoder

java.lang.ObjectSE
org.springframework.messaging.simp.stomp.BufferingStompDecoder

public class BufferingStompDecoder extends ObjectSE
StompDecoder を使用して、ByteBufferSE を 1 つ以上の STOMP メッセージにデコードします。メッセージが不完全な場合、未使用のコンテンツはバッファリングされ、次の入力バッファと結合されます。または、データがまだ十分でない場合は、バッファリングが続行されます。

このデコーダーの単一のインスタンスは、デコードが失敗しない限り、単一のストリーム (たとえば、WebSocket セッション) からすべてのメッセージを読み取るために繰り返し呼び出すことができます。例外が発生した場合、StompDecoder インスタンスは、その内部状態の一貫性が保証されないため、それ以上使用しないでください。その時点で、基礎となるセッションが閉じられることが予想されます。

導入:
4.0.3
作成者:
Rossen Stoyanchev
関連事項:
  • コンストラクターの詳細

    • BufferingStompDecoder

      public BufferingStompDecoder(StompDecoder stompDecoder, int bufferSizeLimit)
      指定された StompDecoder をラップする新しい BufferingStompDecoder を作成します。
      パラメーター:
      stompDecoder - ラップするターゲットデコーダ
      bufferSizeLimit - バッファサイズの制限
  • メソッドの詳細

    • getStompDecoder

      public final StompDecoder getStompDecoder()
      ラップされた StompDecoder を返します。
    • getBufferSizeLimit

      public final int getBufferSizeLimit()
      設定されたバッファサイズ制限を返します。
    • decode

      public ListSE<Message<byte[]>> decode(ByteBufferSE newBuffer)
      指定された ByteBuffer から 1 つ以上の STOMP フレームを Messages のリストにデコードします。

      "content-length" ヘッダーを解析するのに十分なデータがあった場合、その値を使用して、新たにデコードを試行する前に必要なデータ量を決定します。

      "content-length" を解析するのに十分なデータがない場合、または "content-length" ヘッダーがある場合、それ以降のすべての呼び出しは、利用可能なすべてのデータを使用して再度解析を試みます。"content-length" ヘッダーの存在は、大きなメッセージのデコードを最適化できます。

      パラメーター:
      newBuffer - デコードする新しいデータを含むバッファ
      戻り値:
      デコードされたメッセージまたは空のリスト
      例外:
      StompConversionException - デコードの問題が発生した場合に発生します
    • getBufferSize

      public int getBufferSize()
      現在のバッファサイズを計算します。
    • getExpectedContentLength

      @Nullable public IntegerSE getExpectedContentLength()
      現在バッファリングされている不完全な STOMP フレームの予想コンテンツ長を取得します。