20.6.11. hotgitops Protocol 2.6
このバージョンのプロトコルは Infinispan 9.0 以降実装されます。
この Hotfsprogs プロトコルバージョンは、ストリーミングの get 操作および put 操作のサポートが追加されました。これには、2 つの新たな操作が含まれます。
- 任意の初期オフセットを使用して、ストリームとしてデータを取得する getStream
- 必要に応じてバージョンを指定して、データをストリームとして記述するための PutStream
GetStream
要求(0x37):
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| Offset | vInt | 取得を開始するバイト単位のオフセット。最初から取得する場合は 0 に設定します。 |
| キーの長さ | vInt | キーの長さ。vint のサイズは最大 5 バイトで、理論では Integer.MAX_VALUE よりも大きな数値を生成することができます。ただし、Java では Integer.MAX_VALUE を超える単一のアレイを作成できないため、プロトコルは vint アレイの長さを Integer.MAX_VALUE に制限します。 |
| キー | バイト配列 | 値が要求されているキーが含まれるバイトアレイ。 |
GetStream
応答(0x38):
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
| 応答のステータス | 1 バイト |
0x00 = success(キーの取得の場合) |
| フラグ | 1 バイト |
応答に有効期限情報が含まれるかどうかを示すフラグ。フラグの値は、INFINITE_LIFESPAN(0x01)と |
| Created | Long | (オプション)エントリーがサーバー上で作成された時点のタイムスタンプを表す長期。この値は、フラグの INFINITE_LIFESPAN ビットが設定されていない場合のみ返されます。 |
| 有効期間 | vInt | (オプション)エントリーの有効期間を表す vInt を秒単位で表示します。この値は、フラグの INFINITE_LIFESPAN ビットが設定されていない場合のみ返されます。 |
| LastUsed | Long |
(オプション)エントリーがサーバー上で最後にアクセスされた時点のタイムスタンプを表す長期。この値は、フラグの |
| MaxIdle | vInt |
(オプション)エントリーの maxIdle を表す vInt(秒単位)。この値は、フラグの |
| エントリーバージョン | 8 バイト | 既存のエントリーの変更の一意の値。このプロトコルは、entry_version 値が連続して行われるという義務はありません。更新ごとにキーレベルで一意となる必要があります。 |
| 値の長さ | vInt | 成功した場合、値の長さ |
| 値 | バイト配列 | 成功した場合、要求された値。 |
PutStream
要求(0x39)
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| エントリーバージョン | 8 バイト |
使用できる値 |
| キーの長さ | vInt | キーの長さ。vint のサイズは最大 5 バイトで、理論では Integer.MAX_VALUE よりも大きな数値を生成することができます。ただし、Java では Integer.MAX_VALUE を超える単一のアレイを作成できないため、プロトコルは vint アレイの長さを Integer.MAX_VALUE に制限します。 |
| キー | バイト配列 | 値が要求されているキーが含まれるバイトアレイ。 |
| Value Chunk 1 Length | vInt | データの最初のチャンクのサイズ。この値が 0 の場合は、クライアントが値の転送を完了し、操作を実行する必要があります。 |
| Value Chunk 1 | バイト配列 | データの fist チャンクを形成するバイトの配列。 |
| 値が完了するまで継続 |
応答(0x3A):
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
これらの追加上部で、この HotTEMPLATES プロトコルバージョンは、グローバルレベルで示されているバイトを追加してリモートリスナーの登録が改善されます。これは、クライアントが対象のイベントのタイプを示します。たとえば、クライアントは作成されたイベントのみ、または有効期限および削除イベントのみを示すことができます。キーごとにより詳細なイベント関連の情報は、key/value フィルターパラメーターを使用して定義できます。
新しい add リスナーリクエストは以下のようになります。
リモートイベントのクライアントリスナーの追加
要求(0x25):
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| リスナー ID | バイト配列 | リスナー識別子 |
| 状態を含める | byte |
このバイトが |
| キー/値フィルターファクトリー名 | string |
このリスナーと使用するキー/値フィルターファクトリーのオプション名。ファクトリーはキー/値のフィルターインスタンスを作成するために使用されます。これにより、イベントが Hotgitops サーバーで直接フィルターされ、クライアントが関係しないイベントの送信を回避することができます。ファクトリーが使用されない場合、文字列の長さは |
| キー/値フィルターファクトリーパラメーターの数 | byte | キー/値のフィルターファクトリーは、フィルターインスタンスの作成時に任意の数のパラメーターを取り、ファクトリーを使用して異なるフィルターインスタンスを動的に作成できるようにします。この count フィールドは、ファクトリーに渡されるパラメーターの数を示します。ファクトリー名が指定されていない場合、このフィールドはリクエストに表示されません。 |
| キー/値フィルターファクトリーパラメーター 1 | バイト配列 | 最初のキー/値フィルターファクトリーパラメーター |
| キー/値フィルターファクトリーパラメーター 2 | バイト配列 | 2 つ目のキー/値フィルターファクトリーパラメーター |
| … | ||
| コンバーターファクトリー名 | string |
このリスナーと使用するコンバーターファクトリーのオプション名。ファクトリーは、クライアントに送信されたイベントの内容を変換するために使用されます。デフォルトでは、コンバーターが使用されていない場合、生成されるイベントのタイプに応じてイベントが適切に定義されます。ただし、ユーザーがイベントに追加情報を追加したり、イベントのサイズを縮小する必要がある場合もあります。このような場合、コンバーターを使用してイベントの内容を変換できます。指定のコンバーターファクトリー名は、このジョブを実行するコンバーターインスタンスを作成します。ファクトリーが使用されない場合、文字列の長さは |
| コンバーターファクトリーパラメーター数 | byte | コンバーターインスタンスの作成時にコンバーターファクトリーは任意の数のパラメーターを取り、ファクトリーを使用して異なるコンバーターインスタンスを動的に作成できます。この count フィールドは、ファクトリーに渡されるパラメーターの数を示します。ファクトリー名が指定されていない場合、このフィールドはリクエストに表示されません。 |
| コンバーターファクトリーパラメーター 1 | バイト配列 | 最初のコンバーターファクトリーパラメーター |
| コンバーターファクトリーパラメーター 2 | バイト配列 | 2 番目のコンバーターファクトリーパラメーター |
| … | ||
| タイプ関連のあるリスナー | vInt |
関係するリスナーイベントタイプを表す変数長番号。各イベントタイプはビットで表されます。各フラグはビットで表されます。このフィールドは変数の長さとして送信されるため、バイトで最も大きなビットを使用して、より多くのバイトを読み取る必要があるかどうかを判断するため、このビットはフラグを表します。このモデルを使用すると、フラグを短いスペースに統合できます。各フラグの現在の値は次のとおりです。 |