menuTicketing

مثالی سیشن (بائٹ نوٹیشن)

عدد بگ اینڈین ہیں۔ ·· صرف بائٹ کی حد ظاہر کرنے کے لیے ہے، حقیقی بائٹ نہیں۔

# فوری حصول (wait=5s, lease=30s)، key="order-1234"
کلائنٹ → 'A' 00·05 00·1E "order-1234" \n
سرور → 'A' 00·00·00·00·00·00·00·01 "order-1234" \n     (ٹوکن 1)

# زیرِ قبضہ میں انتظار (دوسرا کنکشن، wait=1s)
کلائنٹ2 → 'A' 00·01 00·1E "order-1234" \n
                                       ... موقوف ...
# (a) اگر قبضہ رکھنے والا ریلیز کرے تو فوری منتقلی
کلائنٹ  → 'R' "order-1234" \n
سرور → 'R' "order-1234" \n                              (کلائنٹ: ریلیز ہو گیا)
سرور → 'A' 00·00·00·00·00·00·00·02 "order-1234" \n      (کلائنٹ2: منتقل، بڑا ٹوکن)
# (b) اگر wait(1s) کے اندر نہ ملے
سرور → 'T' "order-1234" \n                              (کلائنٹ2: ٹائم آؤٹ — کوئی grant نہیں)

# غیر موجود کلید کی ریلیز / غلط درخواست
کلائنٹ → 'R' "ghost" \n        → سرور 'N' "ghost" \n
کلائنٹ → 'Z' ...              → سرور 'E' "bad_op" \n

بائنری ہونے کی وجہ سے nc کے ساتھ بھی فوری طور پر تصدیق کی جا سکتی ہے۔

sh
# حصول: 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_op

سرور ↔ سرور کے درمیان کلسٹر ری پلیکیشن پروٹوکول پروٹوکول (کلسٹر) میں بیان کیا گیا ہے۔