Atualmente em testes: o código do GitHub será aberto quando concluído.

Protocolo — Cliente ↔ Servidor

A especificação completa de cada byte trocado na porta do cliente (padrão 5225). Ela consiste no handshake de autenticação, realizado uma vez logo após a conexão, seguido pelo protocolo binário de quadros do lock. Todo cliente oficial implementa essa especificação de forma idêntica, byte a byte.

A seção Estrutura de cada página de mensagem mostra o layout dos campos, e Exemplo mostra os bytes reais enviados (os valores mudam com refresh).

Notação de bytes: op é mostrado como um caractere ASCII (por exemplo, A); wait e lease são valores binários u8, enquanto token e owner são valores binários u64 big-endian. Eles são mostrados em hexadecimal (por exemplo, wait=505). key e addr são texto UTF-8, e reason é texto ASCII — todos eles têm comprimento variável, mostrados como N na estrutura. O \n (nova linha) final encerra o quadro como 0A. Os campos são enviados um após o outro, sem delimitador.

Os cabeçalhos fixos (wait, lease, token, owner) são valores binários e podem conter 0x0A — o parser precisa consumir primeiro o cabeçalho fixo pela contagem de bytes de cada op e só então procurar a nova linha. Os tamanhos são: requisições A = 10B / R = 8B; respostas A = 16B / T·B·R·N = 8B / M·L·E = 0B.

Sumário

O protocolo de consenso de cluster (Raft) entre servidores é abordado em uma página separada.