Le service de télémétrie fournit le registre d'éditeurs configurables comme moyen secondaire de collecte de données. Les applications et les services peuvent s'enregistrer en tant qu'éditeurs de télémétrie dans le registre, ce qui les met à la disposition du service de télémétrie. Pour en savoir plus sur les types de sources de données que nous acceptons, consultez la section Sources de données.
Bibliothèque
La télémétrie communique avec les éditeurs du registre d'éditeurs configurables via Binder. Au lieu d'implémenter manuellement les interfaces AIDL, nous vous recommandons vivement d'utiliser la bibliothèque expérimentale du registre d'éditeurs configurables qui fait partie de notre SDK de télémétrie. La bibliothèque abstrait les interfaces AIDL et fournit une API propre et de type sécurisé pour définir les éditeurs, publier des données de télémétrie et gérer la conversion des messages protobuf dans leur format filaire.
Pour en savoir plus sur l'utilisation de la bibliothèque, consultez la section Registre d'éditeurs configurables bibliothèque.
Implémentation et enregistrement manuels de l'éditeur
Si vous préférez ne pas utiliser la bibliothèque fournie, vous pouvez implémenter manuellement les interfaces Binder nécessaires. Les sections suivantes présentent les étapes nécessaires pour implémenter un éditeur et l'enregistrer dans le registre d'éditeurs configurables.
Inscription
Contrairement aux services SDV, dont les métadonnées, telles que la structure des messages, sont définies dans VSIDL et disponibles pour le système, les éditeurs qui utilisent le registre d'éditeurs configurables doivent fournir explicitement leurs métadonnées. Vous fournissez ces métadonnées via l'objet PublisherInfo lors de l'enregistrement.
Vous enregistrez ces éditeurs à l'aide de l'interface IConfigurablePublisherRegistry
AIDL. Vous pouvez donc écrire les éditeurs dans n'importe quel langage compatible avec AIDL, y compris Java, C++ et Rust. L'interface fournit deux méthodes :
Utilisez la méthode
registerPublisherpour enregistrer un nouvel éditeur auprès du service de télémétrie :void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)Utilisez la méthode
unregisterPublisherpour annuler l'enregistrement d'un éditeur précédemment enregistré auprès du service de télémétrie :void unregisterPublisher(in @utf8InCpp String serviceName)
L'objet PublisherInfo spécifie les informations de base de l'éditeur :
| Champ | Description |
|---|---|
serviceName |
Nom de l'éditeur défini par l'utilisateur. Utilisez ce nom pour y faire référence à partir des configurations de métriques. |
fileDescriptorSet |
`google.protobuf.FileDescriptorSet` sérialisé (pour en savoir plus, consultez la section Messages autodescriptifs) qui contient le descripteur de message (nommé par le champ messageTypeName) du message que cet éditeur publie et toutes ses dépendances nécessaires.google.protobuf.FileDescriptorSet Le service de télémétrie utilise le descripteur de message pour désérialiser les données envoyées par l'éditeur. Pour en savoir plus sur la génération de ce descripteur au moment de la compilation, consultez l'outil de génération de descripteurs protobuf Java. |
messageTypeName |
Nom complet des messages protobuf que votre éditeur publie. Le descripteur de message de ce message doit être déclaré dans fileDescriptorSet. |
supportsGet |
Indique si l'éditeur peut fournir le dernier message sans s'y abonner. |
Implémentation
Votre éditeur personnalisé doit implémenter l'interface IConfigurablePublisher en fournissant les méthodes suivantes :
Le service de télémétrie appelle
createSubscriptionpour s'abonner à un éditeur si leconnection_typede la source de données de cet éditeur dans la configuration des métriques est défini surSUBSCRIPTION. L'argumentISubscribertransmis à votre éditeur fournit une méthodesendData(in byte[] data), que vous pouvez utiliser pour diffuser des messages protobuf vers le service de télémétrie.IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)Le service de télémétrie appelle
getLatestMessagepour récupérer le dernier message d'un éditeur si leconnection_typede la source de données de cet éditeur dans la configuration des métriques est défini surON_DEMAND. Le service de télémétrie n'utilise cette méthode que si lePublisherInfode l'éditeur indiquesupportsGet = true.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
Le service de télémétrie définit l'argument configuration sur l'option configuration de la source de données dans la configuration des métriques.