استورد أساسي::ويب. سجل State { count: ص64 } دالة handle(req: ويب::طلب_وارد, ctx: ويب::سياق<منطقي,State>) -> ويب::استجابة_خادم { دع saved = ويب::التقط_الحالة(ctx). دع published = ويب::استبدل_الحالة_إن_كانت_حالية(ctx, saved, State { count: saved::قيمة::count + 1 }). إذا ليس published::نجاح أو ليس published::قيمة { أرجع ويب::أنشئ_استجابة(409, [])::قيمة. } أرجع ويب::أنشئ_استجابة(200, [])::قيمة. } دالة ابدأ_الرئيسية() -> ص64 { دع routes = ويب::أنشئ_موجه([ويب::أنشئ_وجهة("GET", "/", handle)::قيمة])::قيمة. متغير server = ويب::إعدادات_خدمة(). server::مستمعون = [ويب::أنشئ_مستمع("127.0.0.1", 8081)::قيمة]. دع started = ويب::ابدأ(server, routes, خطأ, State { count: 10 }). إذا ليس started::نجاح { اطبع(started::الخطأ::الرمز). أرجع 1. } دع owner = started::قيمة. دع alias = owner. دع saved = ويب::التقط_حالة_الجلسة(owner)::قيمة. متغير copied = ويب::حالة_الجلسة(owner)::قيمة. copied::count = 99. إذا ويب::حالة_الجلسة(owner)::قيمة::count لا يطابق 10 { أرجع 2. } دع published = ويب::استبدل_حالة_الجلسة_إن_كانت_حالية(owner, saved, State { count: 11 }). إذا ليس published::نجاح أو ليس published::قيمة { أرجع 3. } دع stale = ويب::استبدل_حالة_الجلسة_إن_كانت_حالية(alias, saved, State { count: 12 }). إذا ليس stale::نجاح أو stale::قيمة { أرجع 4. } إذا ويب::حالة_الجلسة(owner)::قيمة::count لا يطابق 11 { أرجع 5. } إذا ليس ويب::أوقف_الجلسة(owner)::نجاح { أرجع 6. } متغير budget = ويب::ميزانية_التقدم(). budget::زمن_الانتظار_مللي = 1. متغير closed = خطأ. طالما ليس closed { دع advanced = ويب::تقدم(owner, budget). إذا ليس advanced::نجاح { اطبع(advanced::الخطأ::الرمز). أرجع 7. } closed = advanced::قيمة يطابق ويب::جلسة_مغلقة. } إذا ليس ويب::أغلق_الجلسة(alias)::نجاح أو ليس ويب::أغلق_الجلسة(owner)::نجاح { أرجع 8. } إذا ويب::حالة_الجلسة(alias)::الخطأ::الرمز لا يطابق "http.closed_session" { أرجع 9. } إذا saved::قيمة::count لا يطابق 10 { أرجع 10. } أرجع 0. }