انضم إلى مجتمع SIG TFX-Addons وساعد في جعل TFX أفضل! انضم إلى SIG TFX-Addons

تينسورفلو :: خدمة:: مصدر

هذه فئة مجردة.

#include <source.h>

تجريد لوحدة نمطية تقوم بمصادر الخدمات لتحميلها ، أو بشكل أكثر دقة ، تتعامل مع البيانات التي يمكن استخدامها لتحميل تلك الخدمات.

ملخص

أمثلة على معالجات البيانات هذه هي:

  • مسار نظام الملفات لخريطة مفردات متسلسلة
  • مقبض إلى RPC وارد يحدد نموذجًا تم تعلمه آليًا ليتم تحميله
  • a Loader (انظر المحمل. ح ) من المفترض عمومًا أن تكون مقابض البيانات صغيرة.

يراقب المصدر بعض الموارد الخارجية (مثل نظام الملفات ، واستدعاءات RPC) لمعرفة المزيد عن الخوادم الجديدة و / أو الإصدارات الجديدة من الخدمات و / أو الحاجة إلى تفريغ الإصدارات القابلة للخدمة. يستخدم رد الاتصال المقدم لإرشاد وحدة الهدف (مثل AspiredVersionsManager ) أي إصدار (إصدارات) معين قابل للخدمة ليتم تحميله. علاوة على ذلك ، اعتمادًا على دلالات الوحدة النمطية الهدف ، يوجه المصدر ضمنيًا أي منها يجب تفريغه عن طريق حذف تلك الخوادم.

الحالة الشائعة هي أن المصدر يصدر إصدارات لواحد بالضبط قابل للخدمة. أبسط حالة هي أن للخدمة نسخة واحدة ثابتة طوال عمر الخادم.

يمكن أن تحتوي المصادر على حالة مشتركة بين العديد من الخوادم المنبعثة ، على سبيل المثال

  1. تجمع مؤشرات ترابط مشترك أو مورد آخر تستخدمه عدة خوادم.
  2. بنية بيانات مشتركة للقراءة فقط تستخدمها العديد من الخوادم ، لتجنب الوقت والمساحة لتكرار بنية البيانات في كل مثيل قابل للخدمة. يمكن إنشاء الحالة المشتركة التي يكون وقت التهيئة فيها وحجمها ضئيلًا (مثل تجمعات سلاسل الرسائل) بشغف بواسطة المصدر ، والذي يقوم بعد ذلك بتضمين مؤشر لها في كل عنصر ServableData تم إصداره. يجب تأجيل إنشاء حالة مشتركة باهظة الثمن أو كبيرة إلى أول مكالمة Loader :: Load () قابلة للتطبيق ، أي يحكمها المدير. بشكل متماثل ، يجب أن يؤدي استدعاء Loader :: Unload () للخدمة النهائية باستخدام الحالة المشتركة باهظة الثمن / الكبيرة إلى هدمه.

البنائين والمدمرين

~Source ()

الأنواع العامة

AspiredVersionsCallback استخدام
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
رد اتصال لمصدر لتوفير نسخة (إصدارات) قابلة للخدمة على الهدف ، ليتم تحميلها.

الوظائف العامة

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
تزود AspiredVersionsCallback لاستخدامها. يمكن استدعاؤه مرة واحدة على الأكثر.

الأنواع العامة

AspiredVersions الاتصال

std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)> AspiredVersionsCallback

رد نداء لمصدر لتوفير نسخة (إصدارات) قابلة للخدمة على الهدف ، ليتم تحميلها.

يتعلق استدعاء واحد لرد الاتصال بتدفق واحد قابل للخدمة (يُعطى بواسطة 'servable_name'). يجب أن تكون جميع الإصدارات المقدمة في المكالمة للخدمة المحددة في 'servable_name'. الدعوات على تيارات مختلفة قابلة للخدمة متعامدة مع بعضها البعض.

قد تزود الاستدعاءات المتعددة كائنات بيانات قابلة للخدمة بمعرفات متطابقة (أي نفس الاسم والإصدار القابل للخدمة). يتم التعامل مع كائنات البيانات القابلة للخدمة على أنها مكافئة لغويًا. سيحتفظ المستلم في النهاية بواحد ويتجاهل الباقي.

إذا تم توفير إصدار قابل للخدمة V في استدعاء أول ، ثم تم حذفه لاحقًا من الاحتجاج الثاني ، فإن مضمون حذف V يعتمد على دلالات هدف رد الاتصال. ستفسر بعض الأهداف إغفال V على أنه تعليمات ضمنية لتفريغ V. يجب على كل هدف توثيق دلالاته في هذا الصدد.

الوظائف العامة

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

تزود AspiredVersionsCallback لاستخدامها. يمكن استدعاؤه مرة واحدة على الأكثر.

~ المصدر

virtual  ~Source()=default