Sinaliza a rotinas de diagnóstico em execução o cancelamento prematuro de uma conversação para poupança de recursos.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 654e2e9e4acaProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Sinaliza a rotinas de diagnóstico em execução o cancelamento prematuro de uma conversação para poupança de recursos.
A classe ara::diag::CancellationHandler informa as aplicações de diagnóstico sobre o cancelamento prematuro de um processamento em curso no Diagnostic Management [SWS_DM_00608]. O objeto criado pelo DM-Core permite ao processador de serviço consultar o estado de cancelamento através de IsCanceled() ou ser notificado por callback através de SetNotifier(), a fim de cessar imediatamente o processamento do serviço [SWS_DM_00615]. Um estado de cancelamento, uma vez definido, é irrevogável, e os acessos à instância devem ser protegidos do lado da aplicação, uma vez que a interface não é segura para threads.
Contexto
A classe ara::diag::CancellationHandler atua no módulo diag como um indicador de estado partilhado que assinala se um processamento de diagnóstico em curso deve ser cancelado prematuramente [SWS_DM_00608]. Na AUTOSAR Adaptive Platform, a classe efetua a mediação entre a instância de servidor do Diagnostic Management (DM) e a lógica de aplicação em execução, como, por exemplo, no processamento de serviços UDS específicos do fabricante (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.24 «Custom Diagnostic Services», [SWS_DM_00502]).
Se uma conversação de diagnóstico ativa for cancelada por eventos externos ou requisitos de protocolo, a instância do servidor de diagnóstico é obrigada a cessar a atividade iniciada o mais rápido possível [SWS_DM_00278]. Através do CancellationHandler, este cancelamento é sinalizado ao processador de serviço, de modo que cálculos com consumo intensivo de recursos sejam cancelados e o envio indevido de respostas de diagnóstico antes do início da sua transmissão seja evitado [SWS_DM_00279].
Ciclo de vida
A instanciação de ara::diag::CancellationHandler está sujeita ao controlo exclusivo do framework de diagnóstico: o construtor padrão está explicitamente eliminado para as aplicações (delete), pelo que as instâncias só podem ser criadas pelo DM-Core [SWS_DM_00609]. Para assegurar uma atribuição de estado inequívoca, a classe é especificada como uma instância única não copiável; o construtor de cópia [SWS_DM_00611] e o operador de atribuição por cópia [SWS_DM_00613] estão eliminados.
Por outro lado, a classe suporta a semântica de movimento: o construtor de movimento [SWS_DM_00610] e o operador de atribuição por movimento [SWS_DM_00612] estão declarados como implementações padrão como noexcept. Presumivelmente, isto permite ao framework transferir a propriedade da instância de forma eficiente para contextos de execução a jusante. Pergunta (aberta)
Em termos de estado, a instância apresenta um comportamento monótono. Imediatamente após a inicialização, IsCanceled() sinaliza o valor false[SWS_DM_00984]. Assim que a conversação de diagnóstico associada é cancelada, o estado muda para true. Este estado de cancelamento permanece irreversível até à destruição da instância [SWS_DM_00984].
Registo ou polling: A aplicação regista através de SetNotifier() uma função de notificação do tipo ara::diag::CancellationHandler::CancellationHandlerSetNotifier ([SWS_DM_02075]), que é chamada aquando da ocorrência de um cancelamento [SWS_DM_00615]. Alternativamente ou em simultâneo, consulta ciclicamente IsCanceled()[SWS_DM_00614].
Sinalização: Se o DM cancelar a conversação, o estado no manipulador muda para true[SWS_DM_00984] e o notificador configurado é acionado [SWS_DM_00615].
Cancelamento: A aplicação cessa imediatamente o trabalho iniciado [SWS_DM_00278]. Se a resposta ainda não tiver sido transmitida, o DM suprime o envio [SWS_DM_00279].
Conclusão: Após o término do processamento, o objeto manipulador é destruído juntamente com o contexto do serviço.
A interface de ara::diag::CancellationHandler distingue-se por um desenho livre de erros. Todos os métodos, tais como IsCanceled()[SWS_DM_00614], SetNotifier()[SWS_DM_00615], bem como as operações de movimento [SWS_DM_00610][SWS_DM_00612], são seguros contra exceções (noexcept) e não retornam códigos de erro.
Se ocorrer uma chamada múltipla de SetNotifier(), isto não conduz a um erro: registos subsequentes substituem integralmente o callback definido anteriormente [SWS_DM_00615], [SWS_DM_01348].
Requer atenção especial a segurança de threads: todas as funções-membro (IsCanceled, SetNotifier) e o tipo de callback estão expressamente declarados como não seguros para threads [SWS_DM_00614], [SWS_DM_00615], [SWS_DM_02075]. Se forem efetuadas consultas de estado ou registos de notificadores através dos limites de threads, a aplicação deve aplicar mecanismos de proteção externos. Além disso, o callback deverá ser chamado de forma síncrona na thread desencadeadora do DM, razão pela qual as funções de notificador do lado da aplicação devem permanecer sem bloqueios. Pergunta Q-26c43c035d4f18a3 (aberta)
Este guia foi gerado por um sistema de IA com base na especificação AUTOSAR Adaptive R25-11.
Registering a notifier function which is called if the diagnostic service execution is cancelled in DM. A consecutive call of this method will overwrite the previous registered notifier.
Registering a notifier function which is called if the diagnostic service execution is cancelled in DM. A consecutive call of this method will overwrite the previous registered notifier.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d99693aaeb20ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) do cabeçalho ara/diag/cancellation_handler.h registra uma função de callback do tipo CancellationHandlerSetNotifier. Essa função é chamada pelo Diagnostic Management (DM) assim que a execução de um serviço de diagnóstico é cancelada. O registro em si ocorre de forma síncrona e não possui valor de retorno (void).
Tratamento de erros e semântica de execução
A chamada é especificada como noexcept e considerada segura contra exceções (exception safe) ([SWS_DM_00615]). Códigos de erro específicos, retornos de erro ou mensagens DET/DEM não estão previstos para esta interface.
Simultaneidade e restrições
Em relação à thread-safety, o método é classificado como not thread-safe ([SWS_DM_00615]). Por isso, uma instância de CancellationHandler não pode ser modificada concorrentemente de forma desprotegida. Em chamadas múltiplas e consecutivas de SetNotifier na mesma instância, o DM sobrescreve o notificador registrado anteriormente ([SWS_DM_01348], SWS Diagnostics p. 193). Além disso, a função de callback presumivelmente não deve executar operações bloqueantes, a fim de não atrasar o processamento interno de cancelamento do DM. Pergunta Q-94d2cb76c17c4fa4 (aberta)
Interação
Uma instância de CancellationHandler é transmitida pelo DM a manipuladores de serviços e de rotinas como parâmetro, por exemplo, no processamento genérico de serviços ([SWS_DM_00618]), em acessos a dados ([SWS_DM_00636]) ou em rotinas ([SWS_DM_00554]). Se uma conversa de diagnóstico for interrompida, o DM cancela atividades internas em andamento, na medida do possível ([SWS_DM_00278]), e descarta a transmissão da resposta ([SWS_DM_00279]). O registro via SetNotifier oferece uma via de reação orientada a eventos, além da consulta síncrona do status de cancelamento via IsCanceled ([SWS_DM_00984]).
Este texto foi criado por uma IA; todas as afirmações técnicas são comprovadas pelo payload.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão