Signaleert aan lopende diagnoseroutines het vroegtijdig afbreken van een conversatie om resources te sparen.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: 654e2e9e4acaHerkomstOpen vragen (2)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Signaleert aan lopende diagnoseroutines het vroegtijdig afbreken van een conversatie om resources te sparen.
De klasse ara::diag::CancellationHandler informeert diagnosetoepassingen over het voortijdig afbreken van een lopende verwerking in Diagnostic Management [SWS_DM_00608]. Het door de DM-Core gecreëerde object stelt de serviceprocessor in staat de afbreekstatus via IsCanceled() op te vragen of zich via een callback via SetNotifier() te laten waarschuwen, om de serviceverwerking onmiddellijk te staken [SWS_DM_00615]. Een eenmaal ingestelde afbreekstatus is onherroepelijk, en toegangen tot de instantie moeten aan de toepassingszijde worden beveiligd, aangezien de interface niet thread-safe is.
Context
De klasse ara::diag::CancellationHandler fungeert binnen de module diag als een gedeelde toestandsindicator die aangeeft of een lopende diagnoseverwerking voortijdig moet worden afgebroken [SWS_DM_00608]. In het AUTOSAR Adaptive Platform bemiddelt de klasse tussen de serverinstantie van het Diagnostic Management (DM) en de uitvoerende toepassingslogica, zoals bij de verwerking van fabrikantspecifieke UDS-diensten (AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.24 “Custom Diagnostic Services”, [SWS_DM_00502]).
Wordt een actieve diagnoseconversatie geannuleerd door externe gebeurtenissen of protocolvereisten, dan is de Diagnostic Server-instantie verplicht de gestarte activiteit zo snel mogelijk te staken [SWS_DM_00278]. Via de CancellationHandler wordt deze afbreking gesignaleerd aan de serviceprocessor, zodat resource-intensieve berekeningen worden afgebroken en het ontoelaatbare verzenden van diagnoseresponses vóór het begin van de overdracht wordt verhinderd [SWS_DM_00279].
Levenscyclus
De instantiëring van ara::diag::CancellationHandler is onderworpen aan de exclusieve controle van het diagnoseframework: de standaardconstructor is voor toepassingen expliciet verwijderd (delete), zodat instanties uitsluitend door de DM-Core kunnen worden aangemaakt [SWS_DM_00609]. Om een eenduidige toewijzing van de toestand te garanderen, is de klasse gespecificeerd als niet-kopieerbare enkelvoudige instantie; copy constructor [SWS_DM_00611] en copy assignment operator [SWS_DM_00613] zijn verwijderd.
Daarentegen ondersteunt de klasse move-semantiek: de move constructor [SWS_DM_00610] en de move assignment operator [SWS_DM_00612] zijn als standaardimplementaties gedeclareerd als noexcept. Dit stelt het framework er vermoedelijk toe in staat het eigendom van de instantie efficiënt over te dragen naar downstream uitvoeringscontexten. Vraag (open)
Qua toestand vertoont de instantie monotoon gedrag. Onmiddellijk na de initialisatie signaleert IsCanceled() de waarde false[SWS_DM_00984]. Zodra de bijbehorende diagnoseconversatie wordt geannuleerd, wisselt de toestand naar true. Deze afbreekstatus blijft tot aan de vernietiging van de instantie onomkeerbaar behouden [SWS_DM_00984].
Registratie of polling: De toepassing registreert middels SetNotifier() een notificatiefunctie van het type ara::diag::CancellationHandler::CancellationHandlerSetNotifier ([SWS_DM_02075]), die wordt aangeroepen wanneer een afbreking optreedt [SWS_DM_00615]. Als alternatief of daarnaast pollt zij cyclisch IsCanceled()[SWS_DM_00614].
Signalering: Breekt de DM de conversatie af, dan wisselt de status in de handler naar true[SWS_DM_00984] en wordt de geregistreerde notifier geactiveerd [SWS_DM_00615].
Afbreking: De toepassing staakt de gestarte werkzaamheden onmiddellijk [SWS_DM_00278]. Als de respons nog niet is verzonden, onderdrukt de DM de verzending [SWS_DM_00279].
Afronding: Na beëindiging van de verwerking wordt het handler-object samen met de servicecontext vernietigd.
De interface van ara::diag::CancellationHandler kenmerkt zich door een foutloos ontwerp. Alle methoden zoals IsCanceled()[SWS_DM_00614], SetNotifier()[SWS_DM_00615] evenals de move-operaties [SWS_DM_00610][SWS_DM_00612] zijn uitzonderingsveilig (noexcept) en retourneren geen foutcodes.
Vindt een meervoudige aanroep van SetNotifier() plaats, dan leidt dit niet tot een fout: opeenvolgende registraties overschrijven de eerder ingestelde callback volledig [SWS_DM_00615], [SWS_DM_01348].
Bijzondere aandacht vereist de thread-safety: alle elementfuncties (IsCanceled, SetNotifier) en het callback-type zijn uitdrukkelijk als niet thread-safe gedeclareerd [SWS_DM_00614], [SWS_DM_00615], [SWS_DM_02075]. Worden statusopvragingen of notifier-registraties over threadgrenzen heen uitgevoerd, dan moet de toepassing externe beveiligingsmechanismen toepassen. Bovendien wordt de callback vermoedelijk synchroon in de activerende thread van de DM aangeroepen, waardoor toepassingsspecifieke notifier-functies niet-blokkerend moeten blijven. Vraag Q-26c43c035d4f18a3 (open)
Deze handleiding werd gegenereerd door een AI-systeem op basis van de specificatie 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.
DOOR AI GEGENEREERDongecontroleerdModel: gemini-3.8-flash-medium · Inspanning: medium · Temperatuur: niet regelbaar · Prompt: d99693aaeb20HerkomstOpen vragen (1)
vertaald uit de Duitse handleidinggemini-3.8-flash-low · 2026-10-13 · Duits origineel
Gebruik
De methode ara::diag::CancellationHandler::SetNotifier ([SWS_DM_00615]) uit de header ara/diag/cancellation_handler.h registreert een callbackfunctie van het type CancellationHandlerSetNotifier. Deze functie wordt aangeroepen door het Diagnostic Management (DM) zodra de uitvoering van een diagnosedienst wordt afgebroken. De registratie zelf verloopt synchroon en bezit geen retourwaarde (void).
Foutafhandeling en uitvoeringssemantiek
De aanroep is gespecificeerd als noexcept en geldt als uitzonderingsveilig (exception safe) ([SWS_DM_00615]). Specifieke foutcodes, foutretourwaarden of DET-/DEM-meldingen zijn voor deze interface niet voorzien.
Gelijktijdigheid en beperkingen
Wat betreft thread-safety is de methode geclassificeerd als not thread-safe ([SWS_DM_00615]). Daarom mag een instantie van CancellationHandler niet onbeschermd gelijktijdig worden gewijzigd. Bij meervoudige, opeenvolgende aanroepen van SetNotifier op dezelfde instantie overschrijft het DM de eerder geregistreerde notifier ([SWS_DM_01348], SWS Diagnostics p. 193). Bovendien voert de callbackfunctie doelmatigerwijs vermoedelijk geen blokkerende operaties uit, om de interne afbreekverwerking van het DM niet te vertragen. Vraag Q-94d2cb76c17c4fa4 (open)
Samenspel
Een CancellationHandler-instantie wordt door het DM als parameter doorgegeven aan service- en routinehandlers, bijvoorbeeld bij de generieke dienstafhandeling ([SWS_DM_00618]), gegevenstoegangen ([SWS_DM_00636]) of routines ([SWS_DM_00554]). Breekt een diagnoseconversatie af, dan breekt het DM lopende interne activiteiten waar mogelijk af ([SWS_DM_00278]) en verwerpt het de verzending van het antwoord ([SWS_DM_00279]). De registratie via SetNotifier biedt naast het synchroon opvragen van de afbreekstatus via IsCanceled ([SWS_DM_00984]) een gebeurtenisgestuurd reactiepad.
Deze tekst is opgesteld door een AI; alle inhoudelijke beweringen zijn onderbouwd door de payload.
gemini-3.8-flash-low· 2026-10-13 · Duits origineel