Publisher Registry yang Dapat Dikonfigurasi

Layanan Telemetri menyediakan Registry Penayang yang Dapat Dikonfigurasi sebagai sarana sekunder untuk pengumpulan data. Aplikasi dan layanan dapat mendaftarkan diri sebagai penayang telemetri di registry, yang pada gilirannya akan membuatnya tersedia untuk layanan Telemetri. Lihat Sumber Data untuk mengetahui informasi selengkapnya tentang jenis sumber data yang kami dukung.

Koleksi

Telemetri berkomunikasi dengan penayang Registry Penayang yang Dapat Dikonfigurasi melalui Binder. Daripada menerapkan antarmuka AIDL secara manual, sebaiknya gunakan koleksi Registry Penayang yang Dapat Dikonfigurasi eksperimental yang merupakan bagian dari Telemetry SDK kami. Koleksi ini mengabstraksi antarmuka AIDL dan menyediakan API yang bersih dan aman untuk menentukan penayang, memublikasikan data telemetri, dan mengelola konversi pesan protobuf ke format kabelnya.

Untuk mengetahui informasi selengkapnya tentang penggunaan koleksi, lihat Penayang yang Dapat Dikonfigurasi Koleksi Registry.

Penerapan dan pendaftaran penayang manual

Jika tidak ingin menggunakan koleksi yang disediakan, Anda dapat menerapkan antarmuka Binder yang diperlukan secara manual. Bagian berikut memberikan ringkasan langkah-langkah yang diperlukan untuk menerapkan penayang dan mendaftarkannya di Registry Penayang yang Dapat Dikonfigurasi.

Pendaftaran

Tidak seperti layanan SDV, yang memiliki metadata, seperti struktur pesan, yang ditentukan dalam VSIDL dan tersedia untuk sistem, penayang yang menggunakan Registry Penayang yang Dapat Dikonfigurasi harus secara eksplisit memberikan metadatanya. Anda memberikan metadata ini melalui objek PublisherInfo selama pendaftaran.

Anda mendaftarkan penayang ini menggunakan antarmuka IConfigurablePublisherRegistry AIDL. Dengan demikian, Anda dapat menulis penayang dalam bahasa apa pun yang didukung AIDL, termasuk Java, C++, dan Rust. Antarmuka ini menyediakan dua metode:

  • Gunakan metode registerPublisher untuk mendaftarkan penayang baru ke layanan Telemetri:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • Gunakan metode unregisterPublisher untuk membatalkan pendaftaran penayang yang sebelumnya terdaftar dari layanan Telemetri:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

Objek PublisherInfo menentukan informasi dasar penayang:

Kolom Deskripsi
serviceName Nama penayang buatan pengguna. Gunakan nama ini untuk merujuknya dari konfigurasi metrik.
fileDescriptorSet `google.protobuf.FileDescriptorSet` yang diserialisasi (lihat Pesan yang Menjelaskan Sendiri untuk mengetahui informasi selengkapnya) yang berisi deskriptor pesan (diberi nama oleh kolom messageTypeName) dari pesan yang dipublikasikan penayang ini dan semua dependensi yang diperlukan.google.protobuf.FileDescriptorSet Layanan Telemetri menggunakan deskriptor pesan untuk mendeserialisasi data yang dikirim oleh penayang. Untuk mengetahui informasi selengkapnya tentang cara membuat ini pada waktu build, lihat Alat generator deskriptor protobuf Java.
messageTypeName Nama lengkap pesan protobuf yang dipublikasikan penayang Anda. Deskriptor pesan ini harus dideklarasikan di fileDescriptorSet.
supportsGet Menunjukkan apakah penayang dapat memberikan pesan terbaru tanpa berlangganan.

Penerapan

Penayang kustom Anda harus menerapkan antarmuka IConfigurablePublisher dengan menyediakan metode berikut:

  • Layanan Telemetri memanggil createSubscription untuk berlangganan ke penayang jika connection_type sumber data untuk penayang ini dalam konfigurasi metrik ditetapkan ke SUBSCRIPTION. Argumen ISubscriber yang diteruskan ke penayang Anda menyediakan metode sendData(in byte[] data), yang dapat Anda gunakan untuk melakukan streaming pesan protobuf ke layanan Telemetri.

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • Layanan Telemetri memanggil getLatestMessage untuk mengambil pesan terbaru penayang jika connection_type sumber data untuk penayang ini dalam konfigurasi metrik ditetapkan ke ON_DEMAND. Layanan Telemetri hanya menggunakan metode ini jika PublisherInfo penayang menunjukkan supportsGet = true.

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

Layanan Telemetri menetapkan argumen configuration ke opsi configuration sumber data dalam konfigurasi metrik.