Signale aux routines de diagnostic en cours l'interruption prématurée d'une conversation afin de préserver les ressources.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 654e2e9e4acaProvenanceQuestions ouvertes (2)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Signale aux routines de diagnostic en cours l'interruption prématurée d'une conversation afin de préserver les ressources.
La classe ara::diag::CancellationHandler informe les applications de diagnostic de l'interruption prématurée d'un traitement en cours dans le Diagnostic Management [SWS_DM_00608]. L'objet créé par le cœur du DM permet au processeur de service d'interroger l'état d'interruption via IsCanceled() ou d'être notifié par callback via SetNotifier() afin d'interrompre sans délai le traitement du service [SWS_DM_00615]. Un état d'interruption une fois défini est irréversible, et les accès à l'instance doivent être sécurisés côté application, car l'interface n'est pas sûre vis-à-vis des threads.
Contexte
La classe ara::diag::CancellationHandler agit au sein du module diag comme un indicateur d'état partagé qui signale si un traitement de diagnostic en cours doit être interrompu prématurément [SWS_DM_00608]. Dans l'AUTOSAR Adaptive Platform, la classe sert d'intermédiaire entre l'instance serveur du Diagnostic Management (DM) et la logique applicative exécutante, comme par exemple lors du traitement de services UDS spécifiques au constructeur (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.24 « Custom Diagnostic Services », [SWS_DM_00502]).
Si une conversation de diagnostic active est annulée par des événements externes ou des exigences protocolaires, l'instance du serveur de diagnostic est tenue d'interrompre l'activité démarrée le plus rapidement possible [SWS_DM_00278]. Cette annulation est signalée au processeur de service via le CancellationHandler, de sorte que les calculs gourmands en ressources soient interrompus et que l'envoi non autorisé de réponses de diagnostic soit empêché avant le début de leur transmission [SWS_DM_00279].
Cycle de vie
L'instanciation de ara::diag::CancellationHandler est soumise au contrôle exclusif du framework de diagnostic : le constructeur par défaut est explicitement supprimé pour les applications (delete), de sorte que les instances ne peuvent être créées que par le cœur du DM [SWS_DM_00609]. Afin de garantir une attribution d'état univoque, la classe est spécifiée comme une instance unique non copiable ; le constructeur de copie [SWS_DM_00611] et l'opérateur d'affectation par copie [SWS_DM_00613] sont supprimés.
En revanche, la classe prend en charge la sémantique de déplacement : le constructeur de déplacement [SWS_DM_00610] et l'opérateur d'affectation par déplacement [SWS_DM_00612] sont déclarés sous forme d'implémentations par défaut en tant que noexcept. Cela permet vraisemblablement au framework de transférer efficacement la propriété de l'instance vers des contextes d'exécution en aval. Question (ouverte)
Du point de vue de l'état, l'instance présente un comportement monotone. Immédiatement après l'initialisation, IsCanceled() signale la valeur false[SWS_DM_00984]. Dès que la conversation de diagnostic associée est annulée, l'état passe à true. Cet état d'annulation demeure irréversible jusqu'à la destruction de l'instance [SWS_DM_00984].
Enregistrement ou polling : l'application enregistre au moyen de SetNotifier() une fonction de notification du type ara::diag::CancellationHandler::CancellationHandlerSetNotifier ([SWS_DM_02075]), qui est appelée lors de la survenue d'une interruption [SWS_DM_00615]. Alternativement ou en parallèle, elle interroge cycliquement IsCanceled()[SWS_DM_00614].
Signalisation : si le DM interrompt la conversation, l'état dans le handler passe à true[SWS_DM_00984] et le notificateur enregistré est déclenché [SWS_DM_00615].
Interruption : l'application interrompt immédiatement le travail commencé [SWS_DM_00278]. Si la réponse n'a pas encore été transmise, le DM en supprime l'envoi [SWS_DM_00279].
Achèvement : une fois le traitement terminé, l'objet handler est détruit en même temps que le contexte de service.
L'interface de ara::diag::CancellationHandler se caractérise par une conception exempte d'erreurs. Toutes les méthodes telles que IsCanceled()[SWS_DM_00614], SetNotifier()[SWS_DM_00615] ainsi que les opérations de déplacement [SWS_DM_00610][SWS_DM_00612] sont sûres vis-à-vis des exceptions (noexcept) et ne renvoient aucun code d'erreur.
Un appel multiple de SetNotifier() ne conduit pas à une erreur : les enregistrements ultérieurs écrasent complètement le callback précédemment défini [SWS_DM_00615], [SWS_DM_01348].
Une attention particulière doit être portée à la sécurité vis-à-vis des threads : toutes les fonctions membres (IsCanceled, SetNotifier) et le type de callback sont expressément déclarés comme non sûrs vis-à-vis des threads [SWS_DM_00614], [SWS_DM_00615], [SWS_DM_02075]. Si des interrogations d'état ou des enregistrements de notificateurs sont effectués à travers les limites de threads, l'application doit mettre en œuvre des mécanismes de protection externes. De plus, le callback devrait être appelé de manière synchrone dans le thread déclencheur du DM, raison pour laquelle les fonctions de notification côté application doivent rester non bloquantes. Question Q-26c43c035d4f18a3 (ouverte)
Ce guide a été généré par un système d'IA sur la base de la spécification 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.
GÉNÉRÉ PAR IAnon vérifiéModèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : d99693aaeb20ProvenanceQuestions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand
Utilisation
La méthode ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) issue de l'en-tête ara/diag/cancellation_handler.h enregistre une fonction de rappel de type CancellationHandlerSetNotifier. Cette fonction est appelée par le Diagnostic Management (DM) dès que l'exécution d'un service de diagnostic est interrompue. L'enregistrement lui-même s'effectue de manière synchrone et ne possède aucune valeur de retour (void).
Traitement des erreurs et sémantique d'exécution
L'appel est spécifié comme noexcept et est considéré comme sûr vis-à-vis des exceptions (exception safe) ([SWS_DM_00615]). Aucun code d'erreur spécifique, retour d'erreur ou message DET/DEM n'est prévu pour cette interface.
Concurrence et restrictions
Concernant la sécurité des threads, la méthode est classée comme not thread-safe ([SWS_DM_00615]). Par conséquent, une instance de CancellationHandler ne doit pas être modifiée de façon concurrente et non protégée. En cas d'appels multiples successifs de SetNotifier sur la même instance, le DM écrase le notificateur précédemment enregistré ([SWS_DM_01348], SWS Diagnostics p. 193). De plus, la fonction de rappel ne devrait judicieusement exécuter aucune opération bloquante afin de ne pas retarder le traitement interne de l'interruption par le DM.
Question Q-94d2cb76c17c4fa4 (ouverte)
Interaction
Une instance de CancellationHandler est transmise comme paramètre aux gestionnaires de service et de routine par le DM, par exemple lors du traitement de service générique ([SWS_DM_00618]), des accès aux données ([SWS_DM_00636]) ou des routines ([SWS_DM_00554]). Si une conversation de diagnostic est interrompue, le DM interrompt dans la mesure du possible les activités internes en cours ([SWS_DM_00278]) et abandonne la transmission de la réponse ([SWS_DM_00279]). L'enregistrement via SetNotifier offre une voie de réaction événementielle en plus de l'interrogation synchrone de l'état d'interruption via IsCanceled ([SWS_DM_00984]).
Ce texte a été généré par une IA ; toutes les affirmations techniques sont étayées par la charge utile.
gemini-3.8-flash-low· 2026-10-13 · Original allemand