Signalisiert laufenden Diagnose-Routinen den vorzeitigen Abbruch einer Konversation zur Ressourcenschonung.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 654e2e9e4acaHerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Signalisiert laufenden Diagnose-Routinen den vorzeitigen Abbruch einer Konversation zur Ressourcenschonung.
Die Klasse ara::diag::CancellationHandler informiert Diagnose-Anwendungen über den vorzeitigen Abbruch einer laufenden Verarbeitung im Diagnostic Management [SWS_DM_00608]. Das vom DM-Core erzeugte Objekt erlaubt es dem Service-Prozessor, den Abbruchstatus über IsCanceled() abzufragen oder sich per Callback über SetNotifier() benachrichtigen zu lassen, um die Servicebearbeitung unverzüglich einzustellen [SWS_DM_00615]. Ein einmal gesetzter Abbruchstatus ist unwiderruflich, und Zugriffe auf die Instanz sind anwendungsseitig abzusichern, da die Schnittstelle nicht threadsicher ist.
Kontext
Die Klasse ara::diag::CancellationHandler fungiert innerhalb des Moduls diag als geteilter Zustandsindikator, der anzeigt, ob eine laufende Diagnoseverarbeitung vorzeitig abgebrochen werden soll [SWS_DM_00608]. In der AUTOSAR Adaptive Platform vermittelt die Klasse zwischen der Server-Instanz des Diagnostic Managements (DM) und der ausführenden Anwendungslogik, wie beispielsweise bei der Verarbeitung herstellerspezifischer UDS-Dienste (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.24 „Custom Diagnostic Services“, [SWS_DM_00502]).
Wird eine aktive Diagnosekonversation durch externe Ereignisse oder Protokollanforderungen storniert, ist die Diagnostic-Server-Instanz verpflichtet, die gestartete Aktivität schnellstmöglich einzustellen [SWS_DM_00278]. Über den CancellationHandler wird dieser Abbruch an den Service-Prozessor signalisiert, sodass ressourcenintensive Berechnungen abgebrochen werden und das unzulässige Versenden von Diagnoseantworten vor deren Übertragungsbeginn verhindert wird [SWS_DM_00279].
Lebenszyklus
Die Instanziierung von ara::diag::CancellationHandler unterliegt der exklusiven Kontrolle des Diagnose-Frameworks: Der Standardkonstruktor ist für Anwendungen explizit gelöscht (delete), sodass Instanzen ausschließlich durch den DM-Core erzeugt werden können [SWS_DM_00609]. Um eine eindeutige Zustandszuordnung zu gewährleisten, ist die Klasse als nicht kopierbare Einzelinstanz spezifiziert; Kopierkonstruktor [SWS_DM_00611] und Kopierzuweisungsoperator [SWS_DM_00613] sind gelöscht.
Hingegen unterstützt die Klasse Move-Semantik: Der Move-Konstruktor [SWS_DM_00610] und der Move-Zuweisungsoperator [SWS_DM_00612] sind als Standardimplementierungen als noexcept deklariert. Dies erlaubt es dem Framework vermutlich, das Eigentum an der Instanz effizient in nachgelagerte Ausführungskontexte zu transferieren. Frage (offen)
Zustandsseitig weist die Instanz ein monotones Verhalten auf. Unmittelbar nach der Initialisierung signalisiert IsCanceled() den Wert false[SWS_DM_00984]. Sobald die zugehörige Diagnosekonversation storniert wird, wechselt der Zustand auf true. Dieser Abbruchstatus bleibt bis zur Zerstörung der Instanz irreversibel bestehen [SWS_DM_00984].
Registrierung oder Polling: Die Anwendung registriert mittels SetNotifier() eine Benachrichtigungsfunktion vom Typ ara::diag::CancellationHandler::CancellationHandlerSetNotifier ([SWS_DM_02075]), die bei Eintritt eines Abbruchs aufgerufen wird [SWS_DM_00615]. Alternativ oder begleitend fragt sie IsCanceled() zyklisch ab [SWS_DM_00614].
Signalisierung: Bricht der DM die Konversation ab, wechselt der Status im Handler auf true[SWS_DM_00984] und der hinterlegte Notifier wird ausgelöst [SWS_DM_00615].
Abbruch: Die Anwendung stellt die begonnene Arbeit unverzüglich ein [SWS_DM_00278]. Wurde die Antwort noch nicht übertragen, unterdrückt der DM den Versand [SWS_DM_00279].
Abschluss: Nach Beendigung der Verarbeitung wird das Handler-Objekt zusammen mit dem Servicekontext zerstört.
Die Schnittstelle von ara::diag::CancellationHandler zeichnet sich durch ein fehlerfreies Design aus. Sämtliche Methoden wie IsCanceled()[SWS_DM_00614], SetNotifier()[SWS_DM_00615] sowie die Move-Operationen [SWS_DM_00610][SWS_DM_00612] sind ausnahmesicher (noexcept) und liefern keine Fehlercodes zurück.
Erfolgt ein mehrfacher Aufruf von SetNotifier(), führt dies nicht zu einem Fehler: Nachfolgende Registrierungen überschreiben den zuvor gesetzten Callback vollständig [SWS_DM_00615], [SWS_DM_01348].
Besondere Beachtung erfordert die Thread-Sicherheit: Alle Elementfunktionen (IsCanceled, SetNotifier) und der Callback-Typ sind ausdrücklich als nicht threadsicher deklariert [SWS_DM_00614], [SWS_DM_00615], [SWS_DM_02075]. Werden Statusabfragen oder Notifier-Registrierungen über Threadgrenzen hinweg vorgenommen, muss die Anwendung externe Schutzmechanismen einsetzen. Zudem dürfte der Callback synchron im auslösenden Thread des DM aufgerufen werden, weshalb anwendungsseitige Notifier-Funktionen blockierungsfrei bleiben sollten. Frage Q-26c43c035d4f18a3 (offen)
Dieser Leitfaden wurde durch ein KI-System auf Basis der Spezifikation AUTOSAR Adaptive R25-11 generiert.
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.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: d99693aaeb20HerkunftOffene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Verwendung
Die Methode ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) aus dem Header ara/diag/cancellation_handler.h registriert eine Callback-Funktion vom Typ CancellationHandlerSetNotifier. Diese Funktion wird vom Diagnostic Management (DM) aufgerufen, sobald die Ausführung eines Diagnosedienstes abgebrochen wird. Die Registrierung selbst erfolgt synchron und besitzt keinen Rückgabewert (void).
Fehlerbehandlung und Ausführungssemantik
Der Aufruf ist als noexcept spezifiziert und gilt als ausnahmesicher (exception safe) ([SWS_DM_00615]). Spezifische Fehlercodes, Fehlerrückgaben oder DET-/DEM-Meldungen sind für diese Schnittstelle nicht vorgesehen.
Nebenläufigkeit und Einschränkungen
Hinsichtlich der Thread-Sicherheit ist die Methode als not thread-safe klassifiziert ([SWS_DM_00615]). Daher darf eine Instanz von CancellationHandler nicht ungeschützt nebenläufig modifiziert werden. Bei mehrfachem, aufeinanderfolgendem Aufruf von SetNotifier an derselben Instanz überschreibt das DM den zuvor registrierten Notifier ([SWS_DM_01348], SWS Diagnostics S. 193). Zudem dürfte die Callback-Funktion zweckmäßigerweise keine blockierenden Operationen ausführen, um die interne Abbruchabwicklung des DM nicht zu verzögern. Frage Q-94d2cb76c17c4fa4 (offen)
Zusammenspiel
Eine CancellationHandler-Instanz wird Service- und Routine-Handlern vom DM als Parameter übergeben, beispielsweise bei der generischen Dienstabwicklung ([SWS_DM_00618]), Datenzugriffen ([SWS_DM_00636]) oder Routinen ([SWS_DM_00554]). Bricht eine Diagnosekonversation ab, bricht der DM laufende interne Aktivitäten nach Möglichkeit ab ([SWS_DM_00278]) und verwirft die Übertragung der Antwort ([SWS_DM_00279]). Die Registrierung über SetNotifier bietet neben der synchronen Abfrage des Abbruchstatus via IsCanceled ([SWS_DM_00984]) einen ereignisgesteuerten Reaktionspfad.
Dieser Text wurde von einer KI erstellt; alle fachlichen Aussagen sind durch den Payload belegt.
gemini-3.8-flash-medium· 2026-10-13