Hyperlane میں 𝗣𝗿𝗼𝗹𝗼𝗴𝘂𝗲 𝗮𝗻𝗱 𝗘𝗽𝗶𝗹𝗼𝗴𝘂𝗲 𝗠𝗮𝗰𝗿𝗼𝘀

Middleware، Hyperlane میں ریکویسٹ پروسیسنگ کی ریڑھ کی ہڈی ہے۔ زیادہ تر لوگ معیاری (standard) request اور response middleware استعمال کرتے ہیں۔ تاہم، Hyperlane اضافی کنٹرول کے لیے مخصوص prologue اور epilogue macros فراہم کرتا ہے۔

یہ macros ریکویسٹ لائف سائیکل کے بالکل آغاز اور بالکل اختتام پر چلتے ہیں۔ یہ آپ کو اس بات پر مکمل کنٹرول دیتے ہیں کہ ڈیٹا عین کس وقت کلائنٹ تک پہنچتا ہے۔

The Request Lifecycle:

• ریکویسٹ کا پہنچنا: سرور HTTP ریکویسٹ وصول کرتا ہے۔ • Prologue مرحلہ: آپ ہیڈرز (headers) یا اسٹیٹس کوڈز (status codes) جیسا ابتدائی ڈیٹا بھیجتے ہیں۔ • Middleware چین: فنکشنز ریکویسٹ کو پروسیس کرتے ہیں۔ • Route handler: سسٹم رسپانس (response) تیار کرتا ہے۔ • Response middleware: فنکشنز رسپانس کو پروسیس کرتے ہیں۔ • Epilogue مرحلہ: حتمی ڈیٹا کلائنٹ کو بھیج دیا جاتا ہے (flush) اور کنکشنز بند ہو جاتے ہیں۔

مرحلہ 2 اور 6 کو مینیج کرنے کے لیے ان macros کا استعمال کریں۔

The Send Macros:

غیر اہم (non-critical) ڈیٹا کے لیے #[try_send] استعمال کریں۔ اگر کنکشن ٹوٹ جائے تو یہ سسٹم کو کریش کیے بغیر ایرر کو ہینڈل کرتا ہے۔ یہ اسٹریمنگ (streaming) کے لیے بہترین ہے جہاں ایک چنک (chunk) کا ضائع ہونا کوئی مسئلہ نہیں ہوتا۔

اہم (critical) ڈیٹا کے لیے #[send] استعمال کریں۔ یہ اس بات کو یقینی بناتا ہے کہ ڈیٹا لازمی طور پر پہنچ جائے۔

The Flush Macros:

بفر (buffer) کو کلیئر کرنے کی کوشش کرنے اور ایررز کو بہتر طریقے سے ہینڈل کرنے کے لیے #[try_flush] استعمال کریں۔

تمام بفر شدہ ڈیٹا کو زبردستی کلائنٹ تک پہنچانے کے لیے #[flush] استعمال کریں۔ کنکشن بند کرنے سے پہلے ڈیٹا کے ضیاع کو روکنے کے لیے اسے استعمال کریں۔

Best Practices:

  • ٹوٹے ہوئے کنکشنز پر کریش سے بچنے کے لیے اسٹریمنگ ڈیٹا کے لیے #[try_send] استعمال کریں۔
  • جب ڈیٹا کی ترسیل لازمی ہو تو #[send] استعمال کریں۔
  • کنکشن بند کرنے سے پہلے ہمیشہ اپنا بفر فلیش (flush) کریں۔
  • کنکشن کے دوبارہ استعمال کو مینیج کرنے کے لیے اپنے epilogue میں stream.is_keep_alive() چیک کریں۔
  • ریئل ٹائم اپ ڈیٹس بھیجنے کے لیے Server-Sent Events (SSE) کے لیے ان macros کا استعمال کریں۔
  • سسٹم کی ناکامیوں سے بچنے کے لیے تمام send اور flush ایررز کو ہینڈل کریں۔

یہ ٹولز آپ کو ڈیٹا کے بہاؤ اور رسپانس کے وقت پر درست کنٹرول فراہم کرتے ہیں۔

Source: https://dev.to/tengxgfyrz67s/prologue-and-epilogue-macros-1n29 Project Code: https://github.com/hyperlane-dev/hyperlane