クラス ByteArrayLengthHeaderSerializer

java.lang.ObjectSE
org.springframework.integration.ip.tcp.serializer.AbstractByteArraySerializer
org.springframework.integration.ip.tcp.serializer.ByteArrayLengthHeaderSerializer
実装されているすべてのインターフェース:
AwareApplicationEventPublisherAwareDeserializer<byte[]>Serializer<byte[]>

public class ByteArrayLengthHeaderSerializer extends AbstractByteArraySerializer
InputStream のデータを byte[] に読み取ります。データの前にはバイナリ長(ネットワークバイトオーダー、結果の byte[] には含まれません)を付ける必要があります。

バイナリ長の後に byte[] を OutputStream に書き込みます。長さフィールドには、長さフィールドに続くデータの長さが含まれます。(ネットワークバイト順序)。

デフォルトの長さフィールドは 4 バイトの符号付き整数です。デシリアライズ中、負の値は拒否されます。その他のオプションは、符号なしバイトと符号なしショートです。

他のヘッダー形式の場合は、readHeader(InputStream)writeHeader(OutputStream, int) をオーバーライドします。

導入:
2.0
作成者:
Gary Russell, Artem Bilan
  • フィールドの詳細

    • HEADER_SIZE_INT

      public static final int HEADER_SIZE_INT
      デフォルトの長さヘッダーフィールド。最大 2**31-1 バイトのデータを許可します。
      関連事項:
    • HEADER_SIZE_UNSIGNED_SHORT

      public static final int HEADER_SIZE_UNSIGNED_SHORT
      2**16 バイトまでのデータの unsignedshort。
      関連事項:
    • HEADER_SIZE_UNSIGNED_BYTE

      public static final int HEADER_SIZE_UNSIGNED_BYTE
      最大 255 バイトのデータ用の単一の符号なしバイト。
      関連事項:
  • コンストラクターの詳細

    • ByteArrayLengthHeaderSerializer

      public ByteArrayLengthHeaderSerializer()
      HEADER_SIZE_INT を使用してシリアライザーを構築します。
    • ByteArrayLengthHeaderSerializer

      public ByteArrayLengthHeaderSerializer(int headerSize)
      提供されたヘッダーサイズを使用してシリアライザーを構築します。有効なヘッダーサイズは、HEADER_SIZE_INT(デフォルト)、HEADER_SIZE_UNSIGNED_BYTEHEADER_SIZE_UNSIGNED_SHORT です。
      パラメーター:
      headerSize - ヘッダーサイズ。
  • メソッドの詳細

    • isInclusive

      protected boolean isInclusive()
      長さヘッダー値に独自の長さが含まれている場合は true を返します。
      戻り値:
      長さにヘッダーの長さが含まれている場合は true。
      導入:
      5.2
    • setInclusive

      public void setInclusive(boolean inclusive)
      true に設定すると、ペイロードに加えてヘッダーの長さが含まれるように長さヘッダーが設定されます。有効なヘッダーサイズは HEADER_SIZE_INT(デフォルト)です。HEADER_SIZE_UNSIGNED_BYTEHEADER_SIZE_UNSIGNED_SHORT、および 4, 1 と 2 がそれぞれペイロード長に追加されます。
      パラメーター:
      inclusive - ヘッダーの長さを含める場合は true。
      導入:
      5.2
      関連事項:
    • inclusive

      public ByteArrayLengthHeaderSerializer inclusive()
      ペイロードに加えて、ヘッダーの長さを含めます。有効なヘッダーサイズは HEADER_SIZE_INT(デフォルト)です。HEADER_SIZE_UNSIGNED_BYTEHEADER_SIZE_UNSIGNED_SHORT、および 4, 1 と 2 がそれぞれペイロード長に追加されます。setInclusive(boolean) の流れるような API 形式。
      戻り値:
      シリアライザー。
      導入:
      5.2
      関連事項:
    • deserialize

      public byte[] deserialize(InputStreamSE inputStream) throws IOExceptionSE
      ストリームからヘッダーを読み取り、指定された長さをストリームから読み取り、データを byte[] で返します。長さフィールドが maxMessageSize を超える場合は IOException をスローします。メッセージ間でストリームが閉じられている場合は SoftEndOfStreamException をスローします。
      パラメーター:
      inputStream - 入力ストリーム。
      例外:
      IOExceptionSE - IOException。
    • serialize

      public void serialize(byte[] bytes, OutputStreamSE outputStream) throws IOExceptionSE
      byte[] を出力ストリームに書き込み、その前にネットワークバイトオーダー(ビッグエンディアン)で 4 バイトの長さを指定します。
      パラメーター:
      bytes - バイト。
      outputStream - 出力ストリーム。
      例外:
      IOExceptionSE
    • read

      protected int read(InputStreamSE inputStream, byte[] buffer, boolean header) throws IOExceptionSE
      ソケットからデータを読み取り、データをバッファに入れます。バッファがいっぱいになるか、ソケットタイムアウトが発生するまでブロックします。
      パラメーター:
      inputStream - 入力ストリーム。
      buffer - データを読み込む必要のあるバッファ
      header - ヘッダーを読んでいる場合は true
      戻り値:
      ソケットが閉じていてメッセージの途中ではない場合は < 0 
      例外:
      IOExceptionSE - IOException。
    • writeHeader

      protected void writeHeader(OutputStreamSE outputStream, int length) throws IOExceptionSE
      ヘッダー形式に従って、ヘッダーを書き込みます。
      パラメーター:
      outputStream - 出力ストリーム。
      length - 長さ。
      例外:
      IOExceptionSE - IOException。
    • readHeader

      protected int readHeader(InputStreamSE inputStream) throws IOExceptionSE
      ヘッダーを読み取り、データ部分の長さを返します。
      パラメーター:
      inputStream - 入力ストリーム。
      戻り値:
      データ部分の長さ。
      例外:
      IOExceptionSE - IOException。
      SoftEndOfStreamException - 長さデータが読み取られる前にソケットが閉じた場合。