Biblioteca de cliente de telemetria do Rust

Um cliente de telemetria é um app que interage com o serviço de telemetria para configurar a coleta de dados, gerenciar configurações de métricas e receber relatórios de telemetria. Os clientes usam a biblioteca Rust libsdv_telemetry_rust_wrapper para interagir com o serviço.

Visão geral da superfície da API

Consulte a referência da API da biblioteca de cliente de telemetria Rust para acessar a documentação da API.

A biblioteca oferece uma interface Rust para interagir com o serviço de telemetria subjacente. Ela é responsável pelas seguintes áreas:

  • Gerenciamento do ciclo de vida do serviço:gerencia a conexão com o serviço de telemetria.

    • Inicialização:estabelece uma conexão com o serviço usando uma chamada de bloqueio. Depois de se conectar, você pode registrar callbacks para receber notificações assíncronas sobre o status do sistema e a disponibilidade de novos relatórios.
    • Desligamento:oferece uma maneira de se desconectar do serviço e limpar todos os recursos associados.
  • Gerenciamento do ciclo de vida da configuração de métricas:oferece controle sobre o ciclo de vida das configurações de métricas.

    • Gerenciamento:os clientes podem adicionar, remover, ativar e desativar configurações de métricas.
    • Inspeção:é possível consultar a lista de configurações ativas e inativas.
  • Processamento e recuperação de relatórios:facilita o acesso aos dados coletados pelo serviço de telemetria.

    • Notificações:notifica os clientes de forma assíncrona usando um callback sempre que um novo relatório de métricas estiver pronto para recuperação.
    • Acesso aos dados:fornece métodos para buscar relatórios específicos pelo UUID e recuperar uma lista de todos os relatórios disponíveis.
  • Relatórios de status e erros:fornece insights sobre a integridade e o status do serviço de telemetria.

    • Atualizações de status assíncronas:os clientes recebem atualizações de status em tempo real, incluindo erros e avisos, por meio de um callback dedicado. Isso permite implementar um tratamento de erros robusto e monitorar o estado do serviço.

Exemplo de uso

Para um app completo e compilável que demonstra o ciclo de vida completo, consulte a implementação do cliente de exemplo: samples/telemetry/client/rust/telemetry_client/telemetry_rust_c_client.rs.

O cliente de exemplo é um utilitário de linha de comando que interage com a API da biblioteca completa. O exemplo demonstra como fazer a ponte entre a interface baseada em callback da biblioteca e um ambiente de execução assíncrono do Rust (Tokio) usando canais.

O cliente executa esta sequência de operações:

  1. Estabelece uma conexão com o serviço de telemetria e registra callbacks para atualizações de status e notificações de relatórios de métricas.
  2. Lê arquivos de configuração de métricas fornecidos como argumentos de linha de comando e, em seguida, adiciona e ativa as configurações no serviço.
  3. Usa uma tarefa em segundo plano para registrar mensagens de status assíncronas (erros ou avisos) recebidas do serviço.
  4. Gerencia o loop de recuperação de dados realizando as seguintes ações:
    • Aguarda uma notificação de que um relatório de métricas está pronto.
    • Busca os dados completos do relatório de métricas.
    • Opcionalmente, grava o relatório no disco como um arquivo de buffer de protocolo binário.
  5. Remove a configuração de métricas do serviço depois que ele produz o primeiro relatório de métricas. Essa é uma implementação de demonstração, e seus próprios clientes podem receber qualquer número de relatórios.
  6. Fecha a conexão com o serviço.