Registro de publicadores configurable

El servicio de Telemetría proporciona el Registro de publicadores configurables como un medio secundario para la recopilación de datos. Las aplicaciones y los servicios pueden registrarse como publicadores de telemetría en el registro, lo que, a su vez, los pone a disposición del servicio de Telemetría. Consulta Fuentes de datos para obtener más información sobre los tipos de fuentes de datos que admitimos.

Biblioteca

La telemetría se comunica con los publicadores del Registro de publicadores configurables a través de Binder. En lugar de implementar manualmente las interfaces de AIDL, te recomendamos que uses la biblioteca experimental del Registro de publicadores configurables que forma parte de nuestro SDK de Telemetría. La biblioteca abstrae las interfaces de AIDL y proporciona una API limpia y con seguridad de tipos para definir publicadores, publicar datos de telemetría y administrar la conversión de mensajes de protobuf a su formato de transmisión.

Para obtener más información sobre el uso de la biblioteca, consulta Registro de publicadores configurables biblioteca.

Implementación y registro manuales del publicador

Si prefieres no usar la biblioteca proporcionada, puedes implementar las interfaces de Binder necesarias de forma manual. En las siguientes secciones, se proporciona una descripción general de los pasos necesarios para implementar un publicador y registrarlo en el Registro de publicadores configurables.

Registro

A diferencia de los servicios de SDV, que tienen sus metadatos, como la estructura de mensajes, definidos en VSIDL y disponibles para el sistema, los publicadores que usan el Registro de publicadores configurables deben proporcionar sus metadatos de forma explícita. Proporcionas estos metadatos a través del objeto PublisherInfo durante el registro.

Registras estos publicadores con la IConfigurablePublisherRegistry AIDL interface. Por lo tanto, puedes escribir los publicadores en cualquier lenguaje que admita AIDL, incluidos Java, C++ y Rust. La interfaz proporciona dos métodos:

  • Usa el método registerPublisher para registrar un publicador nuevo en el servicio de Telemetría:

    void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)
    
  • Usa el método unregisterPublisher para anular el registro de un publicador registrado anteriormente en el servicio de Telemetría:

    void unregisterPublisher(in @utf8InCpp String serviceName)
    

El objeto PublisherInfo especifica la información básica del publicador:

Campo Descripción
serviceName Es un nombre del publicador definido por el usuario. Usa este nombre para hacer referencia a él desde las configuraciones de métricas.
fileDescriptorSet Es un google.protobuf.FileDescriptorSet serializado (consulta Mensajes autodescriptivos para obtener más información) que contiene el descriptor de mensajes (denominado por el campo messageTypeName) del mensaje que publica este publicador y todas sus dependencias necesarias. El servicio de Telemetría usa el descriptor de mensajes para deserializar los datos que envía el publicador. Para obtener más información sobre cómo generar esto en el tiempo de compilación, consulta la herramienta de generador de descriptores de protobuf de Java.
messageTypeName Es el nombre completo de los mensajes de protobuf que publica tu publicador. El descriptor de mensajes de este mensaje debe declararse en fileDescriptorSet.
supportsGet Indica si el publicador puede proporcionar el mensaje más reciente sin suscribirse a él.

Implementación

Tu publicador personalizado debe implementar la interfaz IConfigurablePublisher proporcionando los siguientes métodos:

  • El servicio de Telemetría llama a createSubscription para suscribirse a un publicador si el connection_type de la fuente de datos de este publicador en la configuración de métricas se establece en SUBSCRIPTION. El argumento ISubscriber que se pasa a tu publicador proporciona un método sendData(in byte[] data), que puedes usar para transmitir mensajes de protobuf al servicio de Telemetría.

    IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)
    
  • El servicio de Telemetría llama a getLatestMessage para recuperar el mensaje más reciente de un publicador si el connection_type de la fuente de datos de este publicador en la configuración de métricas se establece en ON_DEMAND. El servicio de Telemetría usa este método solo si el PublisherInfo del publicador indica supportsGet = true.

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

El servicio de Telemetría establece el argumento configuration en la opción configuration de la fuente de datos en la configuración de métricas.