クラス BufferingStompDecoder

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

public class BufferingStompDecoder extends ObjectSE
親クラスがそこからすべての(完全な)STOMP フレームを読み取った後、入力 ByteBuffer に残っているコンテンツをバッファーする StompDecoder の拡張。残りのコンテンツは、不完全な STOMP フレームを表しています。追加のデータで繰り返し呼び出されると、decode メソッドは 1 つ以上のメッセージを返すか、まだ十分なデータがない場合はバッファリングを続けます。

このデコーダーの単一のインスタンスを繰り返し呼び出して、デコードが失敗しない限り、単一のストリーム(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 フレームの予想コンテンツ長を取得します。