टेंसरफ़्लो:: सेवारत:: स्रोत

यह एक अमूर्त वर्ग है।

#include <source.h>

एक मॉड्यूल के लिए एक अमूर्त जो स्रोत लोड करने के लिए स्रोत, या अधिक सटीक रूप से, डेटा को संभालता है जिसका उपयोग उन सर्वबल्स को लोड करने के लिए किया जा सकता है।

सारांश

ऐसे डेटा हैंडल के उदाहरण हैं:

  • एक क्रमबद्ध शब्दावली मानचित्र के लिए एक फ़ाइल-सिस्टम पथ
  • आने वाले RPC के लिए एक हैंडल जो लोड करने के लिए मशीन द्वारा सीखे गए मॉडल को निर्दिष्ट करता है
  • एक लोडर (देखें loader.h ) डेटा हैंडल आम तौर पर छोटे माना जाता है।

एक स्रोत कुछ बाहरी संसाधन (फाइल सिस्टम जैसे, RPC कॉल) पर नज़र रखता है नई servables और / या servables के नए संस्करण और / या servable संस्करणों अनलोड करने के लिए जरूरत के बारे में पता लगाने के लिए। यह एक लक्ष्य मॉड्यूल (जैसे निर्देश देने के लिए प्रदान की कॉलबैक का उपयोग करता AspiredVersionsManager लोड करने के लिए एक दिया servable का) कौन सा संस्करण (रों)। इसके अलावा, लक्ष्य मॉड्यूल के शब्दों के आधार पर, स्रोत परोक्ष यह अनलोड करने के लिए उन servables को छोड़ते हुए द्वारा निर्देश देता है कि कौन सा।

एक आम केस है जो है स्रोत ठीक एक servable के लिए संस्करणों का उत्सर्जन करता है। एक और भी सरल मामला यह है कि सर्वर के जीवनकाल के लिए एक सर्व करने योग्य एकल, स्थिर संस्करण होता है।

स्रोत उस स्थिति को रख सकते हैं जो कई उत्सर्जित सर्वेबलों के बीच साझा की जाती है, उदाहरण के लिए

  1. एक साझा थ्रेड पूल या अन्य संसाधन जो कई सर्वेबल का उपयोग करते हैं।
  2. एक साझा रीड-ओनली डेटा संरचना जिसका उपयोग कई सर्वेबल्स करते हैं, प्रत्येक सर्व करने योग्य उदाहरण में डेटा संरचना को दोहराने के समय और स्थान ओवरहेड से बचने के लिए। साझा स्थिति जिसका प्रारंभिक समय और आकार नगण्य है (उदाहरण के लिए थ्रेड पूल) स्रोत द्वारा उत्सुकता से बनाया जा सकता है, जो तब प्रत्येक उत्सर्जित ServableData आइटम में एक पॉइंटर एम्बेड करता है। महंगा या बड़े साझा राज्य के निर्माण के लिए पहले लागू करने के लिए स्थगित कर दिया जाना चाहिए लोडर :: लोड () कॉल, यानी प्रबंधक द्वारा नियंत्रित। संतुलित, लोडर :: अनलोड () महंगा / बड़े साझा राज्य का उपयोग कर इसे फाड़ चाहिए अंतिम servable करने के लिए कॉल।

निर्माता और विनाशक

~Source ()

सार्वजनिक प्रकार

AspiredVersionsCallback का उपयोग करते हुए
std::function< void(const StringPiece servable_name, std::vector< ServableData< T >> versions)>
एक के लिए एक कॉलबैक स्रोत एक लक्ष्य के लिए एक servable की आपूर्ति संस्करण (ओं) को, लोड करने के लिए।

सार्वजनिक समारोह

SetAspiredVersionsCallback ( AspiredVersionsCallback callback)=0
virtual void
उपयोग करने के लिए AspiredVersionsCallback की आपूर्ति करता है। ज्यादा से ज्यादा एक बार कॉल किया जा सकता है।

सार्वजनिक प्रकार

आकांक्षी संस्करण कॉलबैक

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

एक के लिए एक कॉलबैक स्रोत एक लक्ष्य के लिए एक servable की आपूर्ति संस्करण (ओं) को, लोड करने के लिए।

कॉलबैक का एक एकल आह्वान एकल सेवा योग्य स्ट्रीम ('servable_name' द्वारा दिया गया) से संबंधित है। कॉल में दिए गए सभी संस्करण 'servable_name' में पहचाने जाने वाले सर्व करने योग्य होने चाहिए। विभिन्न सेवा योग्य धाराओं पर आमंत्रण एक दूसरे के लिए ऑर्थोगोनल हैं।

एकाधिक आमंत्रण समान आईडी (यानी समान सेवा योग्य नाम और संस्करण) के साथ सेवा योग्य-डेटा ऑब्जेक्ट प्रदान कर सकते हैं। ऐसी सेवा योग्य-डेटा वस्तुओं को शब्दार्थ रूप से समकक्ष माना जाता है। प्राप्तकर्ता अंततः एक को बनाए रखेगा और बाकी को त्याग देगा।

यदि एक सर्व करने योग्य संस्करण V को पहले आह्वान में आपूर्ति की जाती है, और बाद में दूसरे आह्वान से छोड़ दिया जाता है, तो V को छोड़ने का निहितार्थ कॉलबैक के लक्ष्य के शब्दार्थ पर निर्भर करता है। कुछ लक्ष्य V की चूक की व्याख्या V को उतारने के लिए एक निहित निर्देश के रूप में करेंगे। प्रत्येक लक्ष्य को इस संबंध में अपने शब्दार्थ का दस्तावेजीकरण करना चाहिए।

सार्वजनिक समारोह

SetAspiredVersionsCallback

virtual void SetAspiredVersionsCallback(
  AspiredVersionsCallback callback
)=0

उपयोग करने के लिए AspiredVersionsCallback की आपूर्ति करता है। ज्यादा से ज्यादा एक बार कॉल किया जा सकता है।

~स्रोत

virtual  ~Source()=default