Señala a las rutinas de diagnóstico en ejecución la cancelación anticipada de una conversación para preservar recursos.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 654e2e9e4acaProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Señala a las rutinas de diagnóstico en ejecución la cancelación anticipada de una conversación para preservar recursos.
La clase ara::diag::CancellationHandler informa a las aplicaciones de diagnóstico sobre la cancelación prematura de un procesamiento en curso en Diagnostic Management [SWS_DM_00608]. El objeto creado por DM-Core permite al procesador del servicio consultar el estado de cancelación mediante IsCanceled() o ser notificado mediante callback a través de SetNotifier() para detener inmediatamente el procesamiento del servicio [SWS_DM_00615]. Una vez establecido el estado de cancelación, este es irreversible, y los accesos a la instancia deben protegerse del lado de la aplicación, ya que la interfaz no es segura para hilos.
Contexto
La clase ara::diag::CancellationHandler actúa dentro del módulo diag como un indicador de estado compartido que señala si un procesamiento de diagnóstico en curso debe cancelarse anticipadamente [SWS_DM_00608]. En la AUTOSAR Adaptive Platform, la clase media entre la instancia de servidor de Diagnostic Management (DM) y la lógica de aplicación ejecutora, como por ejemplo durante el procesamiento de servicios UDS específicos del fabricante (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.24 «Custom Diagnostic Services», [SWS_DM_00502]).
Si una conversación de diagnóstico activa se cancela debido a eventos externos o requisitos del protocolo, la instancia de servidor de diagnóstico está obligada a suspender la actividad iniciada a la mayor brevedad [SWS_DM_00278]. A través del CancellationHandler se señaliza esta cancelación al procesador del servicio, de modo que se interrumpan los cálculos que consumen muchos recursos y se evite el envío no permitido de respuestas de diagnóstico antes de que se inicie su transmisión [SWS_DM_00279].
Ciclo de vida
La instanciación de ara::diag::CancellationHandler está sujeta al control exclusivo del framework de diagnóstico: el constructor predeterminado está explícitamente eliminado para las aplicaciones (delete), por lo que las instancias solo pueden ser creadas por DM-Core [SWS_DM_00609]. Para garantizar una asignación de estado unívoca, la clase está especificada como instancia única no copiable; el constructor de copia [SWS_DM_00611] y el operador de asignación por copia [SWS_DM_00613] están eliminados.
En cambio, la clase admite semántica de movimiento: el constructor de movimiento [SWS_DM_00610] y el operador de asignación por movimiento [SWS_DM_00612] están declarados como implementaciones predeterminadas mediante noexcept. Presumiblemente, esto permite que el framework transfiera eficientemente la propiedad de la instancia a contextos de ejecución posteriores. Pregunta (abierta)
En cuanto a su estado, la instancia presenta un comportamiento monótono. Inmediatamente después de la inicialización, IsCanceled() señaliza el valor false[SWS_DM_00984]. Tan pronto como se cancela la conversación de diagnóstico asociada, el estado cambia a true. Este estado de cancelación permanece de forma irreversible hasta la destrucción de la instancia [SWS_DM_00984].
Registro o sondeo: la aplicación registra mediante SetNotifier() una función de notificación del tipo ara::diag::CancellationHandler::CancellationHandlerSetNotifier ([SWS_DM_02075]), la cual se invoca al producirse una cancelación [SWS_DM_00615]. De forma alternativa o complementaria, consulta periódicamente IsCanceled()[SWS_DM_00614].
Señalización: si el DM cancela la conversación, el estado en el manejador cambia a true[SWS_DM_00984] y se activa el notificador registrado [SWS_DM_00615].
Cancelación: la aplicación interrumpe inmediatamente el trabajo iniciado [SWS_DM_00278]. Si la respuesta aún no ha sido transmitida, el DM suprime su envío [SWS_DM_00279].
Finalización: una vez concluido el procesamiento, el objeto manejador se destruye junto con el contexto del servicio.
La interfaz de ara::diag::CancellationHandler se caracteriza por un diseño libre de errores. Todos los métodos tales como IsCanceled()[SWS_DM_00614], SetNotifier()[SWS_DM_00615], así como las operaciones de movimiento [SWS_DM_00610][SWS_DM_00612], son seguros ante excepciones (noexcept) y no devuelven códigos de error.
Si se realiza una llamada múltiple a SetNotifier(), esto no genera ningún error: los registros posteriores sobrescriben por completo el callback establecido previamente [SWS_DM_00615], [SWS_DM_01348].
La seguridad para hilos requiere especial atención: todas las funciones miembro (IsCanceled, SetNotifier) y el tipo de callback están declarados expresamente como no seguros para hilos [SWS_DM_00614], [SWS_DM_00615], [SWS_DM_02075]. Si las consultas de estado o los registros de notificadores se efectúan a través de los límites entre hilos, la aplicación debe emplear mecanismos de protección externos. Además, es probable que el callback se ejecute de forma síncrona en el hilo desencadenante del DM, por lo que las funciones notificadoras del lado de la aplicación deben permanecer libres de bloqueos. Pregunta Q-26c43c035d4f18a3 (abierta)
Esta guía fue generada por un sistema de IA sobre la base de la especificación 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d99693aaeb20ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
usar
El método ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) del encabezado ara/diag/cancellation_handler.h registra una función de callback de tipo CancellationHandlerSetNotifier. Esta función es llamada por Diagnostic Management (DM) en cuanto se cancela la ejecución de un servicio de diagnóstico. El registro en sí se realiza de forma síncrona y no tiene ningún valor devuelto (void).
Tratamiento de errores y semántica de ejecución
La llamada está especificada como noexcept y se considera segura frente a excepciones (exception safe) ([SWS_DM_00615]). Para esta interfaz no están previstos códigos de error específicos, retornos de error ni mensajes de DET/DEM.
Concurrencia y restricciones
En cuanto a la seguridad de hilos, el método está clasificado como not thread-safe ([SWS_DM_00615]). Por lo tanto, una instancia de CancellationHandler no debe modificarse de forma concurrente sin protección. En caso de llamadas múltiples y sucesivas a SetNotifier en la misma instancia, DM sobrescribe el notificador registrado previamente ([SWS_DM_01348], SWS Diagnostics p. 193). Además, resulta conveniente que la función de callback no ejecute operaciones bloqueantes para no retrasar el procesamiento interno de cancelación de DM. Pregunta Q-94d2cb76c17c4fa4 (abierta)
Interacción
DM pasa una instancia de CancellationHandler como parámetro a los manejadores de servicios y rutinas, por ejemplo, en el procesamiento genérico de servicios ([SWS_DM_00618]), accesos a datos ([SWS_DM_00636]) o rutinas ([SWS_DM_00554]). Si se cancela una conversación de diagnóstico, DM cancela las actividades internas en curso en la medida de lo posible ([SWS_DM_00278]) y descarta la transmisión de la respuesta ([SWS_DM_00279]). El registro a través de SetNotifier ofrece una vía de reacción controlada por eventos, además de la consulta síncrona del estado de cancelación mediante IsCanceled ([SWS_DM_00984]).
Este texto fue generado por una IA; todas las afirmaciones técnicas están respaldadas por el payload.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán