Esta página descreve os tipos, métodos e tratamento de erros na
biblioteca libsdv_telemetry_rust_wrapper.
Interface TelemetryServiceHolder
A interface principal para clientes é a struct TelemetryServiceHolder. Essa interface fornece o conjunto completo de métodos para gerenciar a conexão de serviço, as configurações de métricas e os relatórios de dados.
Gerenciamento do ciclo de vida do serviço
Esses métodos estabelecem e encerram a conexão com o serviço de telemetria subjacente.
get
pub fn get() -> TelemetryResult<TelemetryServiceHolder>
Um método estático que recupera um identificador thread-safe para o serviço de telemetria.
Essa é uma chamada de bloqueio que aguarda até que o serviço de vinculação de telemetria esteja pronto.
O serviço de telemetria oferece suporte apenas a uma única instância do
TelemetryServiceHolder. Chamar esse método mais de uma vez causa um comportamento indefinido ou
inesperado.
TelemetryServiceHolder implementa os traços Send e Sync, o que significa que ele pode ser compartilhado com segurança entre threads, por exemplo, encapsulando-o em uma instância de Arc. A maioria dos métodos de TelemetryServiceHolder é async e pode ser usada simultaneamente.
| Retorna | |
|---|---|
TelemetryResult<TelemetryServiceHolder>
|
Um resultado que contém o identificador do serviço ou uma instância
TelemetryError
se o serviço não puder ser obtido.
|
init
pub async fn init(
&self,
misc_status_callback: impl Fn(TelemetryServiceStatus) + Send + Sync + 'static,
report_ready_callback: impl Fn(ReportInfo) + Send + Sync + 'static,
) -> TelemetryResult<()>
Inicializa o serviço registrando callbacks assíncronos. Chame esse método
uma vez depois de receber o TelemetryServiceHolder e antes de qualquer outra
interação.
| Parâmetros | |
|---|---|
misc_status_callback
|
impl Fn(TelemetryServiceStatus) + Send + Sync +
'static: um fechamento que recebe e processa atualizações de status e erros do serviço de telemetria.
|
report_ready_callback
|
impl Fn(ReportInfo) + Send + Sync + 'static: um
fechamento que recebe e processa notificações quando um novo relatório de métricas está pronto para
recuperação.
|
| Retorna | |
|---|---|
TelemetryResult<()>
|
Um resultado vazio em caso de sucesso ou
uma instância TelemetryError em caso de falha
|
finish
pub fn finish(&self) -> TelemetryResult<()>
Encerra normalmente a conexão de serviço, limpa os listeners registrados e limpa os recursos associados. Chame esse método uma vez quando o app for encerrado.
| Retorna | |
|---|---|
TelemetryResult<()>
|
Um resultado vazio em caso de sucesso ou
uma instância TelemetryError em caso de falha
|
Gerenciamento de configuração de métricas
Esses métodos assíncronos gerenciam a definição e o estado das configurações de coleta de dados.
O serviço de telemetria mantém as configurações em dois estados:
- Inativa:a configuração é validada e armazenada em disco, mas não é usada para coleta de dados.
- Ativa:a configuração coleta dados, e os componentes dela (gatilhos, editores, por exemplo) estão ativos.
Para garantir que as configurações persistam nas reinicializações do serviço e do dispositivo, o serviço as armazena no disco do dispositivo. O serviço armazena todas as configurações em dois diretórios baseados em estado, validando e, se necessário, ativando-as na inicialização.
add_metrics_config
pub async fn add_metrics_config(&self, serialized_config: &[u8]) -> TelemetryResult<String>
Adiciona uma nova configuração de métricas ao serviço. A configuração precisa ser fornecida como uma matriz de bytes serializada. A configuração adicionada fica inativa por padrão.
| Parâmetros | |
|---|---|
serialized_config
|
&[u8]: uma fração de byte que contém os dados de configuração serializados em protobuf.
|
| Retorna | |
|---|---|
TelemetryResult<String>
|
Um resultado que contém o UUID da configuração recém-adicionada em caso de sucesso ou
instância TelemetryError em caso de falha.
|
activate_metrics_config
pub async fn activate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
Ativa uma configuração de métricas adicionada (ou desativada) anteriormente, iniciando a coleta de dados e a geração de relatórios.
| Parâmetros | |
|---|---|
config_uuid
|
&str: o UUID da configuração a ser ativada |
| Retorna | |
|---|---|
TelemetryResult<String>
|
Um resultado que contém o UUID da configuração ativada em caso de sucesso ou
uma instância TelemetryError em caso de falha.
|
deactivate_metrics_config
pub async fn deactivate_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
Interrompe a coleta de dados e a geração de relatórios para uma configuração de métricas ativa. A configuração permanece no serviço e pode ser reativada mais tarde.
| Parâmetros | |
|---|---|
config_uuid
|
&str: o UUID da configuração a ser desativada. |
| Retorna | |
|---|---|
TelemetryResult<String>
|
Um resultado que contém o UUID da configuração desativada em caso de sucesso ou
instância TelemetryError em caso de falha.
|
remove_metrics_config
pub async fn remove_metrics_config(&self, config_uuid: &str) -> TelemetryResult<String>
Remove uma configuração de métricas permanentemente. Se a configuração estiver ativa, o serviço a desativará primeiro.
| Parâmetros | |
|---|---|
config_uuid
|
&str: o UUID da configuração a ser removida. |
| Retorna | |
|---|---|
TelemetryResult<String>
|
Um resultado que contém o UUID da configuração removida em caso de sucesso ou
uma instância TelemetryError em caso de falha.
|
remove_all_metrics_configs
pub async fn remove_all_metrics_configs(&self) -> TelemetryResult<String>
Remove todas as configurações de métricas atuais, desativando as que estão ativas.
| Retorna | |
|---|---|
TelemetryResult<String>
|
Um resultado que contém uma string de mensagem de status em caso de sucesso ou
uma instância TelemetryError em caso de falha.
|
get_active_metrics_config_uuids
pub async fn get_active_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
Consulta o serviço para uma lista de UUIDs de todas as configurações no estado ativo.
| Retorna | |
|---|---|
TelemetryResult<Vec<String>>
|
Um resultado que contém um vetor de strings UUID para configurações de métricas ativas em caso de sucesso ou uma instância TelemetryError em caso de falha.
|
get_inactive_metrics_config_uuids
pub async fn get_inactive_metrics_config_uuids(&self) -> TelemetryResult<Vec<String>>
Consulta o serviço para uma lista de UUIDs de todas as configurações no estado inativo.
| Retorna | |
|---|---|
TelemetryResult<Vec<String>>
|
Um resultado que contém um vetor de strings UUID para configurações de métricas inativas em caso de sucesso ou uma instância TelemetryError em caso de falha.
|
Processamento e recuperação de relatórios de métricas
Com eles, é possível consultar os relatórios disponíveis e recuperar os dados coletados.
get_metrics_report
pub async fn get_metrics_report(&self, report_uuid: &str) -> TelemetryResult<MetricsReport>
Recupera todos os dados do relatório de métricas para um UUID de relatório específico. Você pode receber
o UUID do relatório de uma notificação usando report_ready_callback ou
chamando get_ready_reports_info.
| Parâmetros | |
|---|---|
report_uuid
|
&str: o UUID do relatório específico a ser recuperado. |
| Retorna | |
|---|---|
TelemetryResult<MetricsReport>
|
Um resultado que contém o objeto protobuf MetricsReport desserializado em caso de sucesso ou
a instância TelemetryError em caso de falha.
|
get_ready_reports_info
pub async fn get_ready_reports_info(&self) -> TelemetryResult<Vec<ReportInfo>>
Consulta o serviço de telemetria para uma lista de todos os relatórios concluídos e
prontos para recuperação. Isso é útil para verificar o estado dos relatórios se uma
notificação de callback foi perdida (por exemplo, se report_ready_callback foi
registrado tarde).
| Retorna | |
|---|---|
TelemetryResult<Vec<ReportInfo>>
|
Um resultado que contém o vetor de objetos ReportInfo em caso de
sucesso ou uma instância TelemetryError em caso de falha.
|
Tipos principais, callbacks e tratamento de erros
O libsdv_telemetry_rust_wrapper usa um conjunto de tipos personalizados para interagir com
o serviço de telemetria, gerenciar callbacks assíncronos e processar erros de serviço.
Tipos de erros e respostas da API
Esses tipos são retornados diretamente pelos métodos da biblioteca para indicar o sucesso ou a falha imediata da operação solicitada.
TelemetryResult
A maioria dos métodos retorna um TelemetryResult<T>, que é um alias para o tipo Result padrão, especializado em erros no nível do serviço:
pub type TelemetryResult<T> = Result<T, TelemetryError>;
TelemetryError
A struct TelemetryError encapsula todas as falhas e fornece informações detalhadas e específicas do serviço sobre erros:
| Campos | |
|---|---|
status
|
TelemetryServiceStatusCodes: um código de erro enumerável
|
message
|
String: uma mensagem descritiva que detalha o erro |
TelemetryServiceStatusCodes
Uma enumeração numérica que representa o resultado das chamadas de API e dos estados
do serviço interno. Esses códigos são usados em TelemetryError e
TelemetryServiceStatus. Exemplo:
| Códigos | ||
|---|---|---|
200
|
TELEMETRY_SERVICE_API_CALL_SUCCESS
|
Sucesso |
402
|
METRICS_CONFIG_PARSE_ERROR
|
Falha ao analisar a configuração de métricas |
407
|
REMOVE_METRICS_CONFIG_FAILED
|
Falha ao remover a configuração de métricas |
417
|
METRICS_CONFIG_RUNTIME_EXPRESSION_NODE_EVALUATION_ERROR
|
Não foi possível avaliar a expressão especificada na configuração de métricas |
Tipos de callback assíncronos
Os listeners registrados (misc_status_callback e report_ready_callback)
transmitem esses tipos ao cliente para fornecer atualizações sobre processos em segundo plano.
TelemetryServiceStatus
A struct TelemetryServiceStatus serve como um argumento para o
fechamento misc_status_callback de init, que é registrado durante a
inicialização do serviço. Ele fornece atualizações assíncronas sobre a integridade do serviço e problemas de tempo de execução, por exemplo, desconexão de uma fonte de dados.
| Campos | |
|---|---|
id
|
usize: um identificador exclusivo do evento de status. |
code
|
TelemetryServiceStatusCodes: código de status que categoriza o evento
|
message
|
String: uma descrição legível do status. |
details
|
Option<StatusDetails>: dados estruturados opcionais que fornecem contexto adicional sobre o status
|
StatusDetails
Esse enum encapsula contextos de erros específicos. Se details estiver presente em
TelemetryServiceStatus, ele será uma das
seguintes variantes:
| Variantes | |
|---|---|
AggregationPublisherErrorDetails
|
Ocorreu um erro ao agregar dados |
ServicePublisherErrorDetails
|
Ocorreu um erro ao tentar se conectar a um serviço |
ConditionalTriggerErrorDetails
|
Ocorreu um erro ao avaliar a expressão de um gatilho condicional |
MetricsReportGeneratorErrorDetails
|
Ocorreu um erro ao gerar um relatório de métricas |
ServiceErrorDetails
|
Ocorreu um erro ao receber uma nova mensagem de um serviço |
FileIOErrorDetails
|
Ocorreu um erro de E/S de arquivo |
Cada variante de enumeração contém campos adicionais que fornecem ainda mais contexto.
ReportInfo
A struct ReportInfo serve como um argumento para o fechamento report_ready_callback
de init, que é registrado durante a inicialização do serviço.
Ele contém os identificadores que descrevem um relatório de métricas:
| Campos | |
|---|---|
config_uuid
|
String: o UUID da configuração de métricas que gerou o relatório. |
report_uuid
|
String: o UUID do relatório de métricas pronto para recuperação. |
O campo report_uuid é o único necessário para a recuperação do relatório de métricas (consulte get_metrics_report), enquanto config_uuid serve apenas como informação adicional sobre a origem.