Los enteros son big-endian. ·· es solo un marcador del límite de bytes, no es un byte real.
# Adquisición inmediata (wait=5s, lease=30s), key="order-1234"
cliente → 'A' 00·05 00·1E "order-1234" \n
servidor → 'A' 00·00·00·00·00·00·00·01 "order-1234" \n (token 1)
# Espera mientras está en uso (otra conexión, wait=1s)
cliente2 → 'A' 00·01 00·1E "order-1234" \n
... pendiente ...
# (a) si el poseedor libera, se transfiere de inmediato
cliente → 'R' "order-1234" \n
servidor → 'R' "order-1234" \n (cliente: liberado)
servidor → 'A' 00·00·00·00·00·00·00·02 "order-1234" \n (cliente2: transferido, token mayor)
# (b) si no lo recibe dentro de wait(1s)
servidor → 'T' "order-1234" \n (cliente2: tiempo agotado — sin concesión)
# Liberación de una clave inexistente / solicitud inválida
cliente → 'R' "ghost" \n → servidor 'N' "ghost" \n
cliente → 'Z' ... → servidor 'E' "bad_op" \nAl ser binario, también se puede verificar rápidamente con nc.
# Adquirir: key=order-1, wait=5s(00 05), lease=30s(00 1e)
printf 'A\x00\x05\x00\x1eorder-1\n' | nc -w1 127.0.0.1 5225 | xxd
# → 41 0000000000000001 6f72646572... ('A' + token=1 + "order-1")
printf 'Rorder-1\n' | nc -w1 127.0.0.1 5225 | xxd # → 52 ... ('R' + "order-1")
printf 'Zx\n' | nc -w1 127.0.0.1 5225 # → Ebad_opEl protocolo de replicación de clúster entre servidor y servidor se trata en Protocolo (Clúster).