Saat ini dalam pengujian: kode GitHub akan dibuka setelah selesai.

A · Acquired

Strukturrefresh

Respons sukses untuk request acquire (A). token adalah fencing token (u64, big-endian) yang bertambah setiap kali diberikan, sedangkan owner adalah nilai dari request yang dipantulkan apa adanya — korelator untuk menentukan dengan tepat percobaan acquire mana yang dijawab respons ini (Aturan pencocokan respons).

Setelah op ada header tetap 16 byte. Karena 16 byte tersebut biner dan bisa mengandung 0x0A (\n), klien harus membacanya berdasarkan jumlah byte terlebih dahulu, baru kemudian mencari newline.

Notasi byte: op berupa karakter ASCII, token dan owner bersifat biner (u64, big-endian), dan key berupa teks UTF-8 (panjang variabel, ditampilkan sebagai N di struktur). \n di akhir adalah 0A.

Alur

Klien
Server
A · acquire (key · owner)
key kosong → langsung diterbitkan
A · acquired (token = n · owner dipantulkan)
sedang dipegang → menunggu di antrean hingga pemegang release atau expire
giliran tiba → A · acquired (token = n+1)
permintaanrespons

Ada dua jalur untuk mendapatkan lock, tapi frame-nya sama saja — baik diterbitkan langsung maupun setelah menunggu, A yang datang membawa fencing token baru pada saat itu, dan token hanya akan terus bertambah. Jika wait terlampaui saat menunggu, Timed Out T datang menggantikan respons ini.