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
registerPublisheruntuk mendaftarkan penayang baru ke layanan Telemetri:void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)Gunakan metode
unregisterPublisheruntuk 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
createSubscriptionuntuk berlangganan ke penayang jikaconnection_typesumber data untuk penayang ini dalam konfigurasi metrik ditetapkan keSUBSCRIPTION. ArgumenISubscriberyang diteruskan ke penayang Anda menyediakan metodesendData(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
getLatestMessageuntuk mengambil pesan terbaru penayang jikaconnection_typesumber data untuk penayang ini dalam konfigurasi metrik ditetapkan keON_DEMAND. Layanan Telemetri hanya menggunakan metode ini jikaPublisherInfopenayang menunjukkansupportsGet = true.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
Layanan Telemetri menetapkan argumen configuration ke opsi configuration sumber data dalam konfigurasi metrik.