현재 테스트 중입니다: 완료되면 GitHub 코드를 오픈할 예정입니다.

T · 타임아웃

구조refresh

획득 요청(A)이 wait 안에 락을 얻지 못한 경우입니다 — 서버가 grant 없이 포기했습니다(에러 아님).

바이트 표기: op는 ASCII 문자, owner는 바이너리(u64, 빅엔디안), key는 UTF-8 텍스트(가변, 구조에서 N)입니다. 마지막 \n0A. 고정 헤더는 이진 값이라 0x0A를 포함할 수 있으니 개행을 찾기 전에 바이트 수로 먼저 소비해야 합니다.

owner는 요청에 실었던 값을 그대로 되돌려 준 상관자입니다 — 클라이언트는 이 값으로 어느 요청의 응답인지 특정합니다(응답 매칭 규칙).

흐름

클라이언트
서버
A · 획득 (key · wait · lease)
점유 중 → 대기열 등록
wait 초 안에 차례가 오지 않음
T · 타임아웃
대기열에서 제거 — 재시도하려면 새 A 요청
요청응답

wait=0에서 key가 이미 점유 중이면 queue에 넣지 않고 바로 T를 보냅니다. wait=1..255인 요청은 T가 온 순간 대기열에서 이미 빠져 있으므로, 뒤늦게 락이 발급되는 일은 없습니다. 어느 경우든 token이 발급되지 않은 확정 미획득이므로 정리할 락은 없습니다. 새로 시도하려면 caller가 정한 전체 작업 deadline 안에서 새 A 요청을 만듭니다.