इस पेज पर, libsdv_telemetry_rust_wrapper लाइब्रेरी में इस्तेमाल होने वाले टाइप, तरीके, और गड़बड़ी ठीक करने के तरीके के बारे में बताया गया है.
TelemetryServiceHolder इंटरफ़ेस
क्लाइंट के लिए मुख्य इंटरफ़ेस, TelemetryServiceHolder स्ट्रक्चर होता है. यह इंटरफ़ेस, सेवा कनेक्शन, मेट्रिक कॉन्फ़िगरेशन, और डेटा रिपोर्ट को मैनेज करने के लिए, तरीकों का पूरा सेट उपलब्ध कराता है.
सेवा के लाइफ़साइकल का मैनेजमेंट
इन तरीकों से, टेलीमेट्री सेवा के साथ कनेक्शन बनाया और खत्म किया जाता है.
सदस्यता लें
pub fn get() -> TelemetryResult<TelemetryServiceHolder>
यह एक स्टैटिक तरीका है. इससे टेलीमेट्री सेवा के लिए थ्रेड-सेफ़ हैंडल मिलता है.
यह एक ब्लॉकिंग कॉल है. यह तब तक इंतज़ार करता है, जब तक टेलीमेट्री बाइंडर सेवा तैयार नहीं हो जाती.
टेलीमेट्री सेवा, TelemetryServiceHolder के सिर्फ़ एक इंस्टेंस के साथ काम करती है.
इस तरीके को एक से ज़्यादा बार कॉल करने पर, अनडिफ़ाइंड या
अनचाहा व्यवहार होता है.
TelemetryServiceHolder, Send और Sync ट्रेट लागू करता है. इसका मतलब है कि इसे थ्रेड में सुरक्षित तरीके से शेयर किया जा सकता है. उदाहरण के लिए, इसे Arc के इंस्टेंस में रैप करके शेयर किया जा सकता है. TelemetryServiceHolder के ज़्यादातर तरीके async होते हैं और इनका इस्तेमाल एक साथ किया जा सकता है.
| रिटर्न | |
|---|---|
TelemetryResult<TelemetryServiceHolder>
|
सेवा का हैंडल या
TelemetryError
अगर सेवा नहीं मिल सकती है, तो इंस्टेंस
|
init
pub async fn init(
&self,
misc_status_callback: impl Fn(TelemetryServiceStatus) + Send + Sync + 'static,
report_ready_callback: impl Fn(ReportInfo) + Send + Sync + 'static,
) -> TelemetryResult<()>
यह फ़ंक्शन, एसिंक्रोनस कॉलबैक रजिस्टर करके सेवा को शुरू करता है. TelemetryServiceHolder हासिल करने के बाद और किसी भी अन्य इंटरैक्शन से पहले, इस तरीके को एक बार कॉल करें.
| पैरामीटर | |
|---|---|
misc_status_callback
|
impl Fn(TelemetryServiceStatus) + Send + Sync +
'static: यह एक क्लोज़र है. यह टेलीमेट्री सेवा से स्टेटस और गड़बड़ी से जुड़े अपडेट पाता है और उन्हें प्रोसेस करता है
|
report_ready_callback
|
impl Fn(ReportInfo) + Send + Sync + 'static: यह एक क्लोज़र है. जब मेट्रिक की नई रिपोर्ट तैयार हो जाती है, तब यह सूचनाएं पाता है और उन्हें प्रोसेस करता है.
|
| रिटर्न | |
|---|---|
TelemetryResult<()>
|
कार्रवाई पूरी होने पर खाली नतीजा या
कार्रवाई पूरी न होने पर TelemetryError इंस्टेंस
|
पूरा करें
pub fn finish(&self) -> TelemetryResult<()>
यह सेवा के कनेक्शन को बंद कर देता है, रजिस्टर किए गए लिसनर को हटा देता है, और इससे जुड़े संसाधनों को साफ़ कर देता है. ऐप्लिकेशन बंद होने पर, इस तरीके को एक बार कॉल करें.
| रिटर्न | |
|---|---|
TelemetryResult<()>
|
कार्रवाई पूरी होने पर खाली नतीजा या
कार्रवाई पूरी न होने पर TelemetryError इंस्टेंस
|
मेट्रिक के कॉन्फ़िगरेशन को मैनेज करना
ये एसिंक्रोनस तरीके, डेटा कलेक्शन कॉन्फ़िगरेशन की परिभाषा और स्थिति को मैनेज करते हैं.
टेलीमेट्री सेवा, कॉन्फ़िगरेशन को दो स्थितियों में बनाए रखती है:
- चालू नहीं है: कॉन्फ़िगरेशन की पुष्टि हो गई है और इसे डिस्क पर सेव कर दिया गया है. हालांकि, इसका इस्तेमाल डेटा इकट्ठा करने के लिए नहीं किया जाता.
- चालू है: कॉन्फ़िगरेशन डेटा इकट्ठा करता है और इसके कॉम्पोनेंट (जैसे, ट्रिगर, पब्लिशर) चालू हैं.
यह सेवा, डिवाइस के डिस्क पर कॉन्फ़िगरेशन सेव करती है. इससे यह पक्का किया जा सकता है कि सेवा को रीस्टार्ट करने और डिवाइस को रीबूट करने पर भी कॉन्फ़िगरेशन बने रहें. यह सेवा, सभी कॉन्फ़िगरेशन को दो स्टेट-आधारित डायरेक्ट्री में सेव करती है. साथ ही, बूट होने पर उनकी पुष्टि करती है और अगर ज़रूरी हो, तो उन्हें चालू करती है.
add_metrics_config
pub async fn add_metrics_config(&self, serialized_config: &[u8]) -> TelemetryResult<String>
यह सेवा में नया मेट्रिक कॉन्फ़िगरेशन जोड़ता है. कॉन्फ़िगरेशन को क्रम से लगाए गए बाइट ऐरे के तौर पर दिया जाना चाहिए. जोड़ा गया कॉन्फ़िगरेशन डिफ़ॉल्ट रूप से बंद होता है.
| पैरामीटर | |
|---|---|
serialized_config
|
&[u8]: बाइट स्लाइस, जिसमें protobuf-सीरियलाइज़ किया गया कॉन्फ़िगरेशन डेटा शामिल होता है
|
| रिटर्न | |
|---|---|
TelemetryResult<String>
|
नतीजे में, कॉन्फ़िगरेशन के जोड़े जाने पर उसका UUID होता है या
TelemetryError इंस्टेंस होता है
|
activate_metrics_config
pub async fn activate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
पहले से जोड़े गए (या बंद किए गए) मेट्रिक कॉन्फ़िगरेशन को चालू करता है. साथ ही, इसका डेटा कलेक्शन और रिपोर्टिंग शुरू करता है.
| पैरामीटर | |
|---|---|
config_uuid
|
&str: चालू किए जाने वाले कॉन्फ़िगरेशन का यूयूआईडी |
| रिटर्न | |
|---|---|
TelemetryResult<String>
|
अगर कॉन्फ़िगरेशन चालू हो जाता है, तो नतीजे में उसका यूयूआईडी होता है. अगर कॉन्फ़िगरेशन चालू नहीं होता है, तो नतीजे में TelemetryError इंस्टेंस होता है
|
deactivate_metrics_config
pub async fn deactivate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
इससे, चालू मेट्रिक कॉन्फ़िगरेशन के लिए डेटा इकट्ठा करने और रिपोर्टिंग की सुविधा बंद हो जाती है. कॉन्फ़िगरेशन, सेवा में बना रहता है और इसे बाद में फिर से चालू किया जा सकता है.
| पैरामीटर | |
|---|---|
config_uuid
|
&str: बंद किए जाने वाले कॉन्फ़िगरेशन का यूयूआईडी |
| रिटर्न | |
|---|---|
TelemetryResult<String>
|
नतीजा, जिसमें कॉन्फ़िगरेशन के बंद किए गए वर्शन का UUID होता है. अगर कॉन्फ़िगरेशन बंद नहीं किया जा सका, तो TelemetryError इंस्टेंस होता है
|
remove_metrics_config
pub async fn remove_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
यह फ़ंक्शन, मेट्रिक कॉन्फ़िगरेशन को हमेशा के लिए हटा देता है. अगर कॉन्फ़िगरेशन चालू है, तो सेवा इसे पहले बंद कर देती है.
| पैरामीटर | |
|---|---|
config_uuid
|
&str: हटाने के लिए कॉन्फ़िगरेशन का यूयूआईडी |
| रिटर्न | |
|---|---|
TelemetryResult<String>
|
अगर कॉन्फ़िगरेशन हटाने का अनुरोध पूरा हो जाता है, तो नतीजे में हटाए गए कॉन्फ़िगरेशन का UUID होता है. अगर अनुरोध पूरा नहीं होता है, तो नतीजे में TelemetryError इंस्टेंस होता है
|
remove_all_metrics_configs
pub async fn remove_all_metrics_configs(&self) -> TelemetryResult<String>
इससे सभी मौजूदा मेट्रिक कॉन्फ़िगरेशन हट जाते हैं. साथ ही, जो मेट्रिक कॉन्फ़िगरेशन चालू हैं वे बंद हो जाते हैं.
| रिटर्न | |
|---|---|
TelemetryResult<String>
|
नतीजे में, कार्रवाई पूरी होने पर स्टेटस मैसेज स्ट्रिंग या कार्रवाई पूरी न होने पर TelemetryError इंस्टेंस शामिल होता है
|
get_active_metrics_config_uuids
pub async fn get_active_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
यह कुकी, सेवा से उन सभी कॉन्फ़िगरेशन के UUID की सूची के लिए क्वेरी करती है जो चालू स्थिति में हैं.
| रिटर्न | |
|---|---|
TelemetryResult<Vec<String>>
|
सफल होने पर, इस नतीजे में चालू मेट्रिक कॉन्फ़िगरेशन के लिए यूयूआईडी स्ट्रिंग का वेक्टर होता है. वहीं, गड़बड़ी होने पर TelemetryError इंस्टेंस होता है
|
get_inactive_metrics_config_uuids
pub async fn get_inactive_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
यह सेवा से उन सभी कॉन्फ़िगरेशन के UUID की सूची के लिए क्वेरी करता है जो चालू नहीं हैं.
| रिटर्न | |
|---|---|
TelemetryResult<Vec<String>>
|
नतीजे में, उन मेट्रिक कॉन्फ़िगरेशन के लिए यूयूआईडी स्ट्रिंग का वेक्टर होता है जो चालू नहीं हैं. ऐसा तब होता है, जब अनुरोध पूरा हो जाता है. अगर अनुरोध पूरा नहीं होता है, तो TelemetryError इंस्टेंस मिलता है
|
मेट्रिक रिपोर्ट को हैंडल करना और उसे वापस पाना
इन तरीकों से, उपलब्ध रिपोर्ट के लिए क्वेरी की जा सकती है. साथ ही, इकट्ठा किया गया रिपोर्ट डेटा वापस पाया जा सकता है.
get_metrics_report
pub async fn get_metrics_report(&self, report_uuid: &str) -> TelemetryResult<MetricsReport>
यह फ़ंक्शन, किसी रिपोर्ट के यूयूआईडी के लिए, पूरी मेट्रिक रिपोर्ट का डेटा वापस लाता है. report_ready_callback का इस्तेमाल करके या get_ready_reports_info को कॉल करके, सूचना से रिपोर्ट यूयूआईडी पाया जा सकता है.
| पैरामीटर | |
|---|---|
report_uuid
|
&str: जिस रिपोर्ट को वापस पाना है उसका यूयूआईडी |
| रिटर्न | |
|---|---|
TelemetryResult<MetricsReport>
|
अगर अनुरोध पूरा हो जाता है, तो नतीजे में डिसिरियलाइज़ किया गया MetricsReport protobuf ऑब्जेक्ट शामिल होता है. अगर अनुरोध पूरा नहीं होता है, तो
TelemetryError इंस्टेंस शामिल होता है
|
get_ready_reports_info
pub async fn get_ready_reports_info(&self) -> TelemetryResult<Vec<ReportInfo>>
यह टेलीमेट्री सेवा से उन सभी रिपोर्ट की सूची के लिए क्वेरी करता है जो पूरी हो चुकी हैं और वापस पाने के लिए तैयार हैं. यह रिपोर्ट की स्थिति की जांच करने के लिए उपयोगी है, अगर कोई कॉलबैक सूचना छूट गई हो. उदाहरण के लिए, अगर report_ready_callback को देर से रजिस्टर किया गया था.
| रिटर्न | |
|---|---|
TelemetryResult<Vec<ReportInfo>>
|
सफल होने पर, ReportInfo ऑब्जेक्ट का वेक्टर दिखाने वाला नतीजा या गड़बड़ी होने पर TelemetryError इंस्टेंस
|
मुख्य टाइप, कॉलबैक, और गड़बड़ी को हैंडल करना
libsdv_telemetry_rust_wrapper, टेलीमेट्री सेवा के साथ इंटरैक्ट करने, एसिंक्रोनस कॉलबैक मैनेज करने, और सेवा से जुड़ी गड़बड़ियों को ठीक करने के लिए, कस्टम टाइप के सेट का इस्तेमाल करता है.
एपीआई से मिला जवाब और गड़बड़ी के टाइप
ये टाइप, लाइब्रेरी के तरीकों से सीधे तौर पर दिखाए जाते हैं. इनसे, अनुरोध की गई कार्रवाई के तुरंत पूरा होने या न होने के बारे में पता चलता है.
TelemetryResult
ज़्यादातर तरीके, TelemetryResult<T> दिखाते हैं. यह स्टैंडर्ड Result टाइप का एलियास है. यह सेवा-स्तर की गड़बड़ियों के लिए खास तौर पर बनाया गया है:
pub type TelemetryResult<T> = Result<T, TelemetryError>;
TelemetryError
TelemetryError स्ट्रक्चर में सभी गड़बड़ियों की जानकारी होती है. साथ ही, इसमें सेवा के हिसाब से गड़बड़ी की पूरी जानकारी भी होती है:
| फ़ील्ड | |
|---|---|
status
|
TelemetryServiceStatusCodes: गिनती किया जा सकने वाला गड़बड़ी कोड
|
message
|
String: गड़बड़ी के बारे में जानकारी देने वाला मैसेज |
TelemetryServiceStatusCodes
यह एक संख्यात्मक इन्यूमरेशन है. यह एपीआई कॉल और इंटरनल सेवा की स्थितियों के नतीजे को दिखाता है. इन कोड का इस्तेमाल TelemetryError और TelemetryServiceStatus, दोनों में किया जाता है. उदाहरण के लिए:
| कोड | ||
|---|---|---|
200
|
TELEMETRY_SERVICE_API_CALL_SUCCESS
|
सफल |
402
|
METRICS_CONFIG_PARSE_ERROR
|
मेट्रिक कॉन्फ़िगरेशन को पार्स नहीं किया जा सका |
407
|
REMOVE_METRICS_CONFIG_FAILED
|
मेट्रिक कॉन्फ़िगरेशन नहीं हटाया जा सका |
417
|
METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR
|
मेट्रिक कॉन्फ़िगरेशन में दिए गए एक्सप्रेशन का आकलन नहीं किया जा सका |
एसिंक्रोनस कॉलबैक के टाइप
रजिस्टर्ड लिसनर (misc_status_callback और report_ready_callback), क्लाइंट को ये टाइप पास करते हैं, ताकि बैकग्राउंड प्रोसेस के बारे में अपडेट दिए जा सकें.
TelemetryServiceStatus
TelemetryServiceStatus स्ट्रक्चर, init के misc_status_callback क्लोज़र के लिए एक तर्क के तौर पर काम करता है. इसे सेवा शुरू होने के दौरान रजिस्टर किया जाता है. यह सेवा की परफ़ॉर्मेंस और रनटाइम से जुड़ी समस्याओं के बारे में एसिंक्रोनस अपडेट देती है. उदाहरण के लिए, किसी डेटा सोर्स से डिसकनेक्ट होना.
| फ़ील्ड | |
|---|---|
id
|
usize: स्टेटस इवेंट के लिए यूनीक आइडेंटिफ़ायर |
code
|
TelemetryServiceStatusCodes: इवेंट को कैटगरी में बांटने वाला स्टेटस कोड
|
message
|
String: स्थिति के बारे में ऐसी जानकारी जिसे आसानी से समझा जा सके |
details
|
Option<StatusDetails>: यह स्ट्रक्चर्ड डेटा देना ज़रूरी नहीं है. इससे स्थिति के बारे में अतिरिक्त जानकारी मिलती है
|
StatusDetails
यह enum, गड़बड़ी के खास कॉन्टेक्स्ट को रैप करता है. अगर details, TelemetryServiceStatus में मौजूद है, तो यह इनमें से कोई एक वैरिएंट है:
| वैरिएंट | |
|---|---|
AggregationPublisherErrorDetails
|
डेटा इकट्ठा करते समय कोई गड़बड़ी हुई |
ServicePublisherErrorDetails
|
किसी सेवा से कनेक्ट करते समय कोई गड़बड़ी हुई |
ConditionalTriggerErrorDetails
|
शर्त के हिसाब से ट्रिगर होने वाले एक्सप्रेशन का आकलन करते समय कोई गड़बड़ी हुई |
MetricsReportGeneratorErrorDetails
|
मेट्रिक रिपोर्ट जनरेट करते समय कोई गड़बड़ी हुई |
ServiceErrorDetails
|
किसी सेवा से नया मैसेज पाने के दौरान गड़बड़ी हुई |
FileIOErrorDetails
|
फ़ाइल I/O में कोई गड़बड़ी हुई |
हर enum वैरिएंट में अतिरिक्त फ़ील्ड होते हैं, जिनसे ज़्यादा जानकारी मिलती है.
ReportInfo
ReportInfo स्ट्रक्ट, init के report_ready_callback क्लोज़र के लिए एक तर्क के तौर पर काम करता है. इसे सेवा शुरू होने के दौरान रजिस्टर किया जाता है.
इसमें मेट्रिक रिपोर्ट के बारे में बताने वाले आइडेंटिफ़ायर होते हैं:
| फ़ील्ड | |
|---|---|
config_uuid
|
String: यह रिपोर्ट जनरेट करने वाले मेट्रिक कॉन्फ़िगरेशन का यूयूआईडी है |
report_uuid
|
String: मेट्रिक रिपोर्ट का यूयूआईडी, जिसे वापस पाया जा सकता है |
मेट्रिक रिपोर्ट को फिर से पाने के लिए, सिर्फ़ report_uuid फ़ील्ड ज़रूरी है (get_metrics_report देखें). वहीं, config_uuid फ़ील्ड सिर्फ़ इसके सोर्स के बारे में अतिरिक्त जानकारी देता है.