قيد الاختبار حاليًا: سيتم فتح كود GitHub عند الاكتمال.

A · تم الحصول عليه

البنيةrefresh

الاستجابة الناجحة لـطلب الحصول (A). token هو رمز Fencing (u64، big-endian) يتزايد مع كل منح، أما owner فهو القيمة التي أُرسلت في الطلب معادة كما هي — وهو المُعرِّف الرابط الذي يحدد بدقة أي محاولة حصول تخص هذه الاستجابة (قواعد مطابقة الاستجابات).

يأتي بعد op رأس ثابت من 16 بايت. ولأن هذه البايتات الستة عشر قيم ثنائية، قد تحتوي على 0x0A (\n)، لذا يجب على العميل قراءتها حسب عدد البايتات أولًا ثم البحث عن سطر جديد.

ترميز البايتات: op حرف ASCII، وtoken/owner ثنائيان (u64، big-endian)، وkey نص UTF-8 (متغير الطول، يُعرض كـ N في البنية). \n الأخير هو 0A.

التدفق

العميل
الخادم
A · حصول (key · owner)
مفتاح غير محجوز ← يُصدر فورًا
A · تم الحصول عليه (token = n · صدى owner)
محجوز ← انتظار في الطابور حتى تحرير الحائز أو انتهاء إيجاره
عند حلول الدور A · تم الحصول عليه (token = n+1)
طلباستجابة

هناك مساران للمنح، لكن الإطار واحد في الحالتين — سواء صدر فورًا أو بعد الانتظار، تحمل A الواصلة رمز Fencing جديدًا في تلك اللحظة، والرمز لا يزيد إلا أبدًا. إذا تجاوز الانتظار حد wait، تصل بدلًا من هذه الاستجابة انتهاء المهلة T.