現在テスト中です: 完了後にGitHubのコードを公開する予定です。

プロトコル — クライアント ↔ サーバー ​

クライアントポート(デフォルト5225)上でやり取りされるすべてのバイトの完全な仕様です。 接続直後に一度だけ行われる認証ハンドシェイクと、それに続く バイナリフレームのロックプロトコルで構成されます。すべての公式クライアントはこの仕様を バイト単位で同一に実装しています。

各メッセージページの構造はフィールドレイアウトを、例は実際に送られるバイト列を示します (値はrefreshのたびに変わります)。

バイト表記: opはASCII文字として表示されます(例: A)。wait・leaseはu8バイナリ、 token・ownerはu64ビッグエンディアンのバイナリで、16進数で表示されます(例: wait=5 → 05)。 keyとaddrはUTF-8テキスト、reasonはASCIIテキストで、これらはすべて可変長で あり、構造上はNと表記されます。末尾の\n(改行)がフレームの終端で0Aです。フィールドは 区切りなしで連続して送られます。

固定ヘッダ(wait・lease・token・owner)はバイナリ値のため0x0Aを含みうります — パーサーは改行を探す前に、opごとの固定ヘッダ長をバイト数で先に消費しなければなりません。 長さはリクエストA=10B / R=8B、レスポンスA=16B / T・B・R・N=8B / M・L・E=0Bです。

目次 ​

サーバー間のクラスタ合意(Raft)プロトコルは別ページで扱います。