Registre d'éditeurs configurable

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 registerPublisher pour 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 unregisterPublisher pour 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 createSubscription pour s'abonner à un éditeur si le connection_type de la source de données de cet éditeur dans la configuration des métriques est défini sur SUBSCRIPTION. L'argument ISubscriber transmis à votre éditeur fournit une méthode sendData(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 getLatestMessage pour récupérer le dernier message d'un éditeur si le connection_type de la source de données de cet éditeur dans la configuration des métriques est défini sur ON_DEMAND. Le service de télémétrie n'utilise cette méthode que si le PublisherInfo de l'éditeur indique supportsGet = 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.