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

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

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

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

バイト表記: opASCII文字として表示されます(例: A)。waitleaseu8バイナリtokenowneru64ビッグエンディアンのバイナリで、16進数で表示されます(例: wait=505)。 keyaddrUTF-8テキストreasonASCIIテキストで、これらはすべて可変長で あり、構造上はNと表記されます。末尾の\n(改行)がフレームの終端で0Aです。フィールドは 区切りなしで連続して送られます。

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

目次

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