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

A · Concedido

Estruturarefresh

A resposta de sucesso a uma requisição de aquisição (A). token é um token de fencing (u64, big-endian) que cresce a cada concessão, e owner é o valor enviado na requisição, devolvido sem alteração — o correlacionador que permite identificar com precisão de qual tentativa de aquisição esta é a resposta (Regras de Correspondência de Resposta).

Após o op vem um cabeçalho fixo de 16 bytes. Como esses 16 bytes são binários, podem conter 0x0A (\n), então o cliente deve lê-los pela contagem de bytes primeiro e só depois procurar a nova linha.

Notação de bytes: op é um caractere ASCII, token e owner são binários (u64, big-endian), e key é texto UTF-8 (comprimento variável, mostrado como N na estrutura). O \n final é 0A.

Fluxo

Cliente
Servidor
A · aquisição (key · owner)
chave livre → concedido imediatamente
A · concedido (token = n · owner ecoado)
ocupada → espera na fila o detentor liberar ou expirar
chega a vez → A · concedido (token = n+1)
requisiçãoresposta

Há dois caminhos para ser concedido, mas o quadro é o mesmo em ambos os casos — seja concedido imediatamente ou após esperar, o A que chega carrega um token de fencing novo naquele momento, e o token só aumenta. Se wait for excedido enquanto espera, Tempo Esgotado T chega em vez desta resposta.