Kapselt schreibende Diagnose-Datenübertragungen und koordiniert die Abwicklung über Schreib-Handler.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 6f5de6951762HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Kapselt schreibende Diagnose-Datenübertragungen und koordiniert die Abwicklung über Schreib-Handler.
Die Klasse ara::diag::DataTransferWriteSession kapselt schreibende Diagnose-Datenübertragungen und koordiniert die Weiterleitung an anwendungsspezifische Schreib-Handler ([SWS_DM_01555]). Bei eingehenden UDS-Diensten wie TransferData (0x36) oder RequestTransferExit (0x37) ruft die Diagnoseserver-Instanz die entsprechenden Write- bzw. Exit-Methoden der registrierten Handler auf ([SWS_DM_01317]). Da Standard- und Kopierkonstruktion gelöscht sind, existiert die Session als ausnahmesicheres Einzelexemplar, dessen Erzeugung vermutlich über Template-Konstruktoren erfolgt. Frage (offen)
Kontext
Die Klasse ara::diag::DataTransferWriteSession kapselt sämtliche Varianten schreibender Datenübertragungen innerhalb des Funktionsbereichs Adaptive Platform Diagnostics ([SWS_DM_01555]). Sie fungiert als verbindendes Element zwischen der Diagnoseserver-Instanz der Plattform und den anwendungsspezifischen Implementierungen, welche den eigentlichen Schreibtransfer durchführen.
Im Rahmen diagnostischer Dienste wie RequestFileTransfer (beispielsweise bei der Betriebsart ReplaceFile (0x03) gemäß [SWS_DM_01313]) nimmt die Diagnoseserver-Instanz Übertragungsanfragen entgegen. Treffen im weiteren Verlauf diagnostische Anforderungen des UDS-Dienstes TransferData (0x36) ein, delegiert der Server diese an die Write-Methode derjenigen Handler-Klasse, die an die jeweilige DataTransferWriteSession gebunden ist ([SWS_DM_01317]). Nach Übertragung aller Datenblöcke signalisiert der Dienst RequestTransferExit (0x37) den Abschluss, woraufhin die Diagnoseserver-Instanz die Exit-Methode des registrierten Handlers aufruft ([SWS_DM_01318]).
Kontextdiagramm: Zusammenspiel zwischen Diagnoseserver, DataTransferWriteSession und anwendungsspezifischer Handler-Klasse. Quellen: [SWS_DM_01555], [SWS_DM_01317], [SWS_DM_01318].
Zur Durchsetzung einer eindeutigen Eigentümerschaft ist DataTransferWriteSession weder kopierbar noch kopierzuweisbar: Sowohl der Kopierkonstruktor ([SWS_DM_01559]) als auch der Kopierzuweisungsoperator ([SWS_DM_01560]) sind als delete deklariert. Instanzen existieren folglich als exklusive Einzelexemplare.
Dagegen unterstützt die Klasse vollständige Verschiebesemantik: Der Verschiebekonstruktor ([SWS_DM_01557]) und der Verschiebezuweisungsoperator ([SWS_DM_01558]) sind als Standardimplementierung deklariert und als noexcept sowie ausnahmesicher („exception safe“) spezifiziert. Sie erlauben den effizienten Transfer des Sitzungszustands zwischen Programmkontexten. Die Zerstörung erfolgt über den ausnahmesicheren Standard-Destruktor (~DataTransferWriteSession() noexcept = default, [SWS_DM_01556]). Hinsichtlich der Nebenläufigkeit dürfte die Nutzung primär sequenziell innerhalb des ausführenden Server-Threads erfolgen, da keine Synchronisationsmechanismen für nebenläufige Zugriffe dokumentiert sind. Frage Q-2c2278884fa11b21 (offen)
Nutzungspfad
Der reguläre Ablauf einer schreibenden Übertragung vollzieht sich in folgenden Schritten:
Initialisierung: Bei Eingang einer Schreibanfrage (beispielsweise RequestFileTransfer mit kReplace gemäß [SWS_DM_01313]) wird eine DataTransferWriteSession eingerichtet. Hierbei wird der anwendungsspezifische Handler für Schreiboperationen über Template-Konstruktoren registriert (AUTOSAR_AP_SWS_Diagnostics §8.10 „Context of RequestFileTransfer“).
Datenblockübertragung: Für jede eintreffende Anforderung des UDS-Dienstes TransferData (0x36) ruft die Diagnoseserver-Instanz die Write-Methode der registrierten Handler-Klasse auf ([SWS_DM_01317]). Dieser Schritt wird zyklisch für alle Blöcke der Übertragung wiederholt.
Abschluss der Sitzung: Nach der vollständigen Übertragung empfängt der Diagnoseserver RequestTransferExit (0x37) und ruft daraufhin die Exit-Methode der Handler-Klasse auf ([SWS_DM_01318]).
Bereinigung: Nach erfolgreichem Abschluss oder bei vorzeitigem Abbruch wird das Session-Objekt zerstört ([SWS_DM_01556]).
Fehlerbehandlung und Zuverlässigkeit stützen sich bei ara::diag::DataTransferWriteSession maßgeblich auf statische Typsicherheit und Ausnahmesicherheit:
Vermeidung ungültiger Objektzustände: Das Löschen des Default-Konstruktors ([SWS_DM_01339]) verhindert, dass uninitialisierte Session-Objekte ohne gebundenen Handler existieren können. Das Verbot von Kopieroperationen ([SWS_DM_01559], [SWS_DM_01560]) schließt inkonsistente Zustände durch mehrfache Besitzverhältnisse bereits zur Compile-Zeit aus.
Ausnahmesicherheit beim Verschieben und Zerstören: Die Deklaration von Verschiebekonstruktor ([SWS_DM_01557]), Verschiebezuweisung ([SWS_DM_01558]) und Destruktor ([SWS_DM_01556]) als noexcept garantiert, dass bei Ressourcenübergaben und beim Abbau der Session zur Laufzeit keine Ausnahmen geworfen werden.
Vorzeitiger Abbruch: Schlägt ein Transfer vorzeitig fehl, stellt der noexcept-Destruktor sicher, dass das Session-Objekt auch im Rahmen von Exception-Unwinding zuverlässig aufgeräumt werden kann ([SWS_DM_01556]).
Dieser Leitfaden basiert auf den Spezifikationsdokumenten von AUTOSAR Adaptive Platform Release R25-11.
gemini-3.8-flash-medium· 2026-10-13