20.6.12. hotgitops Protocol 2.7
このバージョンのプロトコルは Infinispan 9.2 以降実装されます。
この Hotfsprogs プロトコルバージョンは、トランザクション操作のサポートを追加しています。これには、3 つの新たな操作が含まれます。
- トランザクション書き込みセット(変更されたキーなど)を使用して prepare は、サーバーでトランザクションを準備および検証しようとします。
- 準備済みトランザクションをコミットします。
- ロールバックし、準備済みのトランザクションをロールバックします。
要求の準備
要求(0x3B):
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| Xid | XID | トランザクション ID(XID) |
| OnePhaseCommit | byte |
|
| キー数 | vInt | キー数 |
| 各キーについて(キーは一意でなければなりません) | ||
| キーの長さ | vInt |
キーの長さ。vInt のサイズは最大 5 バイトで、理論では |
| キー | バイト配列 | キーを含むバイトアレイ |
| Control Byte | Byte |
以下の意味を持つビットセット。 |
| バージョン読み取り | Long |
読み込まれたバージョン。 |
| TimeUnits | Byte |
ライフスパンの時間単位(最初の 4 ビット)および maxIdle(最後 4 ビット)。デフォルトのサーバーの有効期限には、特別なユニット |
| 有効期間 | vLong |
エントリーの有効期間。時間の単位が |
| 最大 ID | vLong |
各エントリーがキャッシュからエビクトされる前にアイドル状態になる期間。時間の単位が |
| 値の長さ | vInt |
値の長さ。 |
| 値 | byte-array |
保存する値。 |
コミットとロールバックリクエスト
要求。コミット(0x3D)および Rollback(0x3F):
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| Xid | XID | トランザクション ID(XID) |
準備、コミット、ロールバックリクエストからの応答。
応答。prepare(0x3C)、Commit(0x3E)、および Rollback(0x40)
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
| XA 戻りコード | vInt |
準備応答を表す XA コード。 |
XID 形式
リクエストの XID の形式は以下のとおりです。
| フィールド名 | サイズ | 値 |
|---|---|---|
| 形式 ID | 署名済み vInt | XID 形式。 |
| グローバルトランザクション ID の長さ | byte |
グローバルトランザクション ID バイトアレイの長さ。最大値は |
| グローバルトランザクション ID | バイト配列 | グローバルトランザクション ID。 |
| ブランチ修飾子の長さ | byte |
ブランチ修飾子バイトアレイの長さ。最大値は |
| ブランチ修飾子 | バイト配列 | ブランチ修飾子。 |
カウンターの設定エンコーディング形式
CounterConfiguration クラスエンコーディングの形式は以下のとおりです。
カウンター関連の操作では、Request Header の Cache Name フィールドが空にすることができます。
Response Header:
* 0x00: Operation successful.
* 0x01: Operation failed.
* 0x02: The counter is't defined.
* 0x04 : The counter reached a boundary. * 0x04: The counter reached a boundary. STRONG カウンターのみ可能です。
| フィールド名 | サイズ | 値 |
|---|---|---|
| Flags | byte |
|
| 同時実行レベル | vInt |
(オプション)カウンターの同時実行レベル。カウンターが |
| 下限 | Long |
(任意)バインドされたカウンターの下限。カウンターが |
| 上限 | Long |
(任意)バインドされたカウンターの上限です。カウンターが |
| 初期値 | Long | カウンターの最初の値。 |
counter create operation
カウンターが存在しない場合は作成します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| カウンターの設定 | variable | カウンターの設定。CounterConfiguration encode を参照してください。 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x01: 操作に失敗しました。カウンターはすでに定義されています。 - エラーコードについては、「 Reponse Header 」を参照してください。
カウンター get configuration 操作
カウンターの設定を返します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前。 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
| カウンターの設定 | variable |
(オプション)カウンターの設定。 |
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x02: Counter は存在しません。 - エラーコードについては、「 Reponse Header 」を参照してください。
カウンターは定義された操作です。
カウンターが定義されているかどうかを確認します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
Response Header Status には、以下の値が使用できます。
-
0x00: Counter が定義されます。 -
0x01: Counter が定義されていない。 - エラーコードについては、「 Reponse Header 」を参照してください。
カウンターの add-and-get 操作
カウンターに値を追加し、新しい値を返します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| 値 | Long | 追加する値 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
| 値 | Long |
(任意設定)カウンターの新しい値。 |
WeakCounter は新しい値にアクセスできないため、値 はゼロになります。
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x02: カウンターが定義されていません。 -
0x04: カウンターがその境界に到達しました。STRONGカウンターのみ可能です。 - エラーコードについては、「 Reponse Header 」を参照してください。
counter reset operation
カウンターの値をリセットします。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x02: Counter が定義されていない。 - エラーコードについては、「 Reponse Header 」を参照してください。
カウンター get 操作
カウンターの値を返します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
| 値 | Long |
(任意設定)カウンターの値。 |
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x02: Counter が定義されていない。 - エラーコードについては、「 Reponse Header 」を参照してください。
カウンター比較およびスワップ操作
現在の値が想定される場合、比較してカウンター値のみを更新します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| expect | Long | カウンターの期待値。 |
| Update | Long | 設定するカウンターの値。 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
| 値 | Long |
(任意設定)カウンターの値。 |
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x02: カウンターが定義されていません。 -
0x04: カウンターがその境界に到達しました。STRONGカウンターのみ可能です。 - エラーコードについては、「 Reponse Header 」を参照してください。
カウンターのリスナーの追加および削除
カウンターのリスナーを追加/削除します。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| listener-id | バイト配列 | リスナーの ID |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
Response Header Status には、以下の値が使用できます。
-
0x00: 成功し、リクエストで使用される接続を使用してイベント(add)を送信するか、または接続を削除(削除)できます。 -
0x01: 成功し、現在の接続は引き続き使用中です。 -
0x02: カウンターが定義されていません。 - エラーコードについては、「 Reponse Header 」を参照してください。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable |
操作コード |
| 名前 | string | カウンターの名前 |
| listener-id | バイト配列 | リスナーの ID |
| エンコードされたカウンターの状態 | byte |
old および new counter の状態にエンコードされました。bit set: |
| 古い値 | Long | カウンターの古い値 |
| 新しい値 | Long | カウンターの新しい値 |
CounterManager 実装内のすべてのカウンターは、同じ listener-id を使用できます。
接続は単一の listener-id に専用で、異なるカウンターからイベントを受信できます。
counter remove operation
クラスターからカウンターを削除します。
カウンターは、再度アクセスされている場合は再作成されます。
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 要求ヘッダー |
| 名前 | string | カウンターの名前 |
| フィールド名 | サイズ | 値 |
|---|---|---|
| ヘッダー | variable | 応答ヘッダー |
Response Header Status には、以下の値が使用できます。
-
0x00: 操作に成功しました。 -
0x02: カウンターが定義されていません。 - エラーコードについては、「 Reponse Header 」を参照してください。