Configurable Publisher Registry

توفّر خدمة القياس عن بُعد "سجلّ الناشرين القابل للإعداد" كوسيلة ثانوية لجمع البيانات. يمكن للتطبيقات والخدمات تسجيل نفسها كناشرين للقياس عن بُعد في قاعدة بيانات المسجّلين، ما يتيح لخدمة القياس عن بُعد استخدامها. لمزيد من المعلومات عن أنواع مصادر البيانات التي نتيحها، يُرجى الاطّلاع على مقالة مصادر البيانات.

المكتبة

تتواصل خدمة القياس عن بُعد مع الناشرين في "سجلّ الناشرين القابل للإعداد" من خلال Binder. بدلاً من تنفيذ واجهات AIDL يدويًا، ننصحك بشدة باستخدام مكتبة "سجلّ الناشرين القابل للإعداد" التجريبية التي تشكّل جزءًا من حزمة Telemetry SDK. تجرّد المكتبة واجهات AIDL وتوفّر واجهة برمجة تطبيقات نظيفة وآمنة من ناحية النوع لتحديد الناشرين ونشر بيانات القياس عن بُعد وإدارة عملية تحويل رسائل Protobuf إلى تنسيقها السلكي.

لمزيد من المعلومات عن استخدام المكتبة، يُرجى الاطّلاع على مقالة مكتبة "سجلّ الناشرين القابل للإعداد ".

تنفيذ الناشر وتسجيله يدويًا

إذا كنت تفضّل عدم استخدام المكتبة المتوفّرة، يمكنك تنفيذ واجهات Binder الضرورية يدويًا. تقدّم الأقسام التالية نظرة عامة على الخطوات اللازمة لتنفيذ ناشر وتسجيله في "سجلّ الناشرين القابل للإعداد".

التسجيل

على عكس خدمات SDV التي يتم تحديد بياناتها الوصفية، مثل بنية الرسالة، في VSIDL وتكون متاحة للنظام، يجب أن يقدّم الناشرون الذين يستخدمون "سجلّ الناشرين القابل للإعداد" بياناتهم الوصفية بشكل صريح. يمكنك تقديم هذه البيانات الوصفية من خلال عنصر PublisherInfo أثناء التسجيل.

يمكنك تسجيل هؤلاء الناشرين باستخدام واجهة IConfigurablePublisherRegistry AIDL. وبالتالي، يمكنك كتابة الناشرين بأي لغة تتيحها AIDL، بما في ذلك Java وC++ وRust. توفّر الواجهة طريقتَين:

  • استخدِم طريقة registerPublisher لتسجيل ناشر جديد في خدمة القياس عن بُعد:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • استخدِم طريقة unregisterPublisher لإلغاء تسجيل ناشر تم تسجيله سابقًا من خدمة القياس عن بُعد:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

يحدّد عنصر PublisherInfo المعلومات الأساسية للناشر:

الحقل الوصف
serviceName اسم يحدّده المستخدم للناشر استخدِم هذا الاسم للإشارة إليه من إعدادات المقاييس.
fileDescriptorSet سلسلة google.protobuf.FileDescriptorSet (راجِع مقالة الرسائل التي تصف نفسها لمزيد من المعلومات) تحتوي على واصف الرسالة (الذي يحمل الاسم الذي يحدّده حقل messageTypeName) للرسالة التي ينشرها هذا الناشر وجميع التبعيات الضرورية لها تستخدم خدمة القياس عن بُعد واصف الرسالة لإلغاء تسلسل البيانات التي يرسلها الناشر. لمزيد من المعلومات عن إنشاء هذا الخيار في مدّة التصميم، يُرجى الاطّلاع على مقالة أداة إنشاء واصفات Java Protobuf.
messageTypeName الاسم الكامل لرسائل Protobuf التي ينشرها الناشر يجب تعريف واصف الرسالة هذه في fileDescriptorSet.
supportsGet يشير إلى ما إذا كان بإمكان الناشر تقديم أحدث رسالة بدون الاشتراك فيها

التنفيذ

يجب أن ينفّذ الناشر المخصّص واجهة IConfigurablePublisher من خلال توفير الطريقتَين التاليتَين:

  • تستدعي خدمة القياس عن بُعد طريقة createSubscription للاشتراك في ناشر إذا تم ضبط connection_type لمصدر البيانات لهذا الناشر في إعدادات المقاييس على SUBSCRIPTION. توفّر وسيطة ISubscriber التي يتم تمريرها إلى الناشر طريقة sendData(in byte[] data)، التي يمكنك استخدامها لبثّ رسائل Protobuf إلى خدمة القياس عن بُعد.

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • تستدعي خدمة القياس عن بُعد طريقة getLatestMessage لجلب أحدث رسالة من ناشر إذا تم ضبط connection_type لمصدر البيانات لهذا الناشر في إعدادات المقاييس على ON_DEMAND. لا تستخدم خدمة القياس عن بُعد هذه الطريقة إلا إذا أشارت PublisherInfo للناشر إلى supportsGet = true.

    @nullable byte[] getLatestMessage(in @nullable byte[] configuration)
    

تضبط خدمة القياس عن بُعد وسيطة configuration على خيار configuration لمصدر البيانات في إعدادات المقاييس.