T · タイムアウト
構造refresh
獲得リクエスト(A)がwait以内にロックを 獲得できなかったときに送られます — サーバーは発行せずに諦めます(これはエラーでは ありません)。
ownerはリクエストに載せた値をそのまま返した相関子です — クライアントはこの値で、どの リクエストに対する応答かを特定します (応答マッチングルール)。
バイト表記:
opはASCII文字、ownerはバイナリ(u64、ビッグエンディアン)、keyはUTF-8 テキスト(可変長、構造上はNと表記)です。末尾の\nは0Aです。固定ヘッダはバイナリ値のため0x0Aを含みうるので、改行を探す前にバイト数で先に消費しなければなりません。
フロー
クライアント
サーバー
A · 獲得 (key · wait · lease · owner)
使用中 → キューに登録
wait秒以内に順番が来ない
T · タイムアウト
キューから削除 — 再試行するには新しいAを送る
リクエストレスポンス
Tが届いた時点で、そのリクエストはすでにキューから削除されているため、後になって ロックが発行されることはありません。トークンも発行されていないため、後片付けは 不要です — 再試行するだけです。