R · 解放済み
構造refresh
解放リクエスト(R)に対する成功レスポンスです。
tokenはリクエストに載せた値をそのまま返した相関子です — クライアントはこの値で、どの リクエストに対する応答かを特定します (応答マッチングルール)。
バイト表記:
opはASCII文字、tokenはバイナリ(u64、ビッグエンディアン)、keyはUTF-8 テキスト(可変長、構造上はNと表記)です。末尾の\nは0Aです。固定ヘッダはバイナリ値のため0x0Aを含みうるので、改行を探す前にバイト数で先に消費しなければなりません。
フロー
保有者X
サーバー
待機者Y
R · 解放 (key · token)
R · 解放済み
待機者がいれば
A · 獲得済み (新しいtoken)
リクエストレスポンス
R(解放済み)は解放者にのみ送られます。待機者がいた場合は、それとは別に、キューの 先頭にいた接続が獲得済み Aを受け取ります — 再競合なしで直接引き継がれます。この2つのレスポンスは異なる接続上で送られるため、 両者の間に順序の保証は必要ありません。