Service proxy method class, one for each ClientServerOperation ( ClientServerOperation.fireAndForget ==FALSE) defined in the ServiceInterface in the role method.
Ermöglicht den asynchronen Aufruf von Service-Methoden mit Rückgabewert sowie die Prüfung des End-to-End-Status.
KI-GENERIERTungeprüftModell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 90f1e995b658HerkunftOffene Fragen (2)
KI-generiertgemini-3.8-flash-medium · 2026-10-13
Ermöglicht den asynchronen Aufruf von Service-Methoden mit Rückgabewert sowie die Prüfung des End-to-End-Status.
Die Proxy-Methodenklasse <SI-Namespace>::proxy::methods::<Method> ermöglicht Client-Anwendungen die Durchführung von Methodenaufrufen mit Rückgabewert für im ServiceInterface definierte Client-Server-Operationen [SWS_CM_00196]. Der Aufruf erfolgt nicht-blockierend über operator(), welcher unmittelbar ein ara::core::Future zur flexiblen synchronen oder asynchronen Ergebnisabfrage zurückgibt [SWS_CM_00196]. Ergänzend erlaubt GetE2EStateMachineState() das Auslesen des Schutzstatus der zugehörigen End-to-End-Zustandsmaschine [SWS_CM_00148]. Da die Operationen als ausnahmesicher spezifiziert sind, werden Übertragungs- und Laufzeitfehler über das Future mit standardisierten Fehlercodes gemeldet.
Kontext
Die Klasse <SI-Namespace>::proxy::methods::<Method> stellt die clientseitige Schnittstelle für synchrone und asynchrone Methodenaufrufe innerhalb des AUTOSAR Adaptive Kommunikationsmanagements dar. Für jede im ServiceInterface deklarierte Client-Server-Operation, bei der das Attribut ClientServerOperation.fireAndForget == FALSE konfiguriert ist, generiert das Kommunikations-Framework genau eine eigene Proxy-Methodenklasse in der Rolle einer Methode. Die Klasse ist als final deklariert und über den Header #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h" eingebunden SWS Communication Management, S. 39. Als direkte Interaktionspartner fungieren die aufrufende Client-Anwendung sowie das Network Binding, welches die Methodenübertragung an die entfernte Service-Instanz weiterleitet und deren Rückmeldung entgegennimmt [SWS_CM_00196]. Die Proxy-Methode nimmt die Aufrufparameter entgegen und kapselt den asynchronen Ablauf über ein ara::core::Future-Objekt, über das der Client den Abschluss und das Ergebnis des Aufrufs abfragt.
Lebenszyklus
Die Instanziierung von <SI-Namespace>::proxy::methods::<Method> erfolgt im Verbund mit dem übergeordneten Service-Proxy. Interpretation: Die Methodenklasse dürfte als fester Bestandteil des generierten Proxy-Objekts zusammen mit diesem instanziiert und zerstört werden, weshalb der Anwender die Instanz nicht separat allokiert. Frage Q-546c9b1bceedef6b (offen) Bezüglich der Nebenläufigkeit ist der Methodenaufruf über operator() nicht-blockierend ausgelegt; die Funktion initiiert die Übertragung und kehrt unverzüglich zum Aufrufer zurück [SWS_CM_00196]. Ein zentraler Zustand der Instanz ist die Absicherung durch End-to-End-Mechanismen (E2E). Über die Methode GetE2EStateMachineState() kann die Anwendung den aktuellen Status der methodenspezifischen Zustandsmaschine (ara::com::e2e::SMState) ermitteln [SWS_CM_00148]. Dieser Zustand wird durch die interne Prüffunktion E2E_Check() bestimmt, die während der Abarbeitung des letzten Aufrufs von operator() ausgeführt wird [SWS_CM_00148], SWS Communication Management, S. 55. Interpretation: Die Zustandsaktualisierung der E2E-Zustandsmaschine dürfte asynchron mit dem Eintreffen und Prüfen der Antwortnachricht wirksam werden. Frage Q-283a9927420e2952 (offen)
Nutzungspfad
Die typische Aufrufreihenfolge umfasst die Initiierung des Methodenaufrufs, die Synchronisation auf das Ergebnis sowie die anschließende Integritätsprüfung:
Aufruf auslösen: Die Client-Anwendung ruft das Funktionsobjekt über operator() mit den deklarierten Eingabeparametern auf [SWS_CM_00196], [SWS_CM_00191].
Unmittelbare Rückkehr: Der Aufruf blockiert den anfragenden Thread nicht, sondern gibt unverzüglich ein Objekt vom Typ ara::core::Future<Output> zurück [SWS_CM_00196].
Ergebnisabfrage: Der Aufrufer entscheidet autonom über synchrones Warten (z. B. über das Future-Objekt) oder eine asynchrone Überwachung auf die Beendigung des Aufrufs [SWS_CM_00196]. Bei erfolgreichem Abschluss liefert das Future das Output-Objekt mit den Antwortwerten [SWS_CM_00196], [SWS_CM_99333].
E2E-Schutzstatus prüfen: Nach Beendigung des Aufrufs kann die Anwendung über GetE2EStateMachineState() den Zustand der E2E-Zustandsmaschine abfragen, um die Gültigkeit der Datenübertragung sicherzustellen [SWS_CM_00148].
Sequenzdiagramm: Typischer Ablauf eines Methodenaufrufs mit asynchroner Rückgabe über Future und nachfolgender E2E-Statusabfrage. Quellen: [SWS_CM_00196], [SWS_CM_00148].
Fehlerszenarien
Die Operationen operator() und GetE2EStateMachineState() sind als ausnahmesicher (exception safe) spezifiziert und mit noexcept deklariert [SWS_CM_00148], [SWS_CM_00196]. Kommunikations- und Bereitstellungsfehler werden daher nicht über C++-Exceptions gemeldet, sondern über das resultierende ara::core::Future-Objekt transportiert, das im Fehlerfall ein entsprechendes ara::core::FutureErrc bzw. Fehlercodes kapselt [SWS_CM_00196]. Spezifizierte Fehlerursachen sind unter anderem:
CommunicationFailure: Das Network Binding meldet einen behebbaren Kommunikationsfehler oder das Scheitern einer abgesicherten Verbindung; bei Kommunikations-Timeouts kann dies zu einem ungewissen Zustand auf dem entfernten Server führen [SWS_CM_00196].
ComErrc::kServiceNotAvailable: Die Service-Instanz ist nach vorheriger Bereitstellung nicht mehr erreichbar [SWS_CM_00196].
ComErrc::kUnknownApplicationError: Ein entfernter Dienst meldet einen nicht konfigurierten Anwendungsfehler [SWS_CM_00196].
ComE2EErrc::kUnspecifiedE2EError: Der Remote-Service meldet einen unspezifizierten End-to-End-Fehler [SWS_CM_00196].
ComErrc::kMinimumSendIntervalViolationError: Die Aufrufanforderung erfolgte schneller als das für das Schnittstellenelement konfigurierte minimale Sendeintervall minimumSendInterval zulässt [SWS_CM_00196].
Berechtigungsverletzung (InsufficientPermissionsViolation): Fehlen dem Aufrufer erforderliche Berechtigungen, wird die Ausführung durch die Grant Enforcement verweigert [SWS_CM_00196].
Für diese Anwendungs- und Kommunikationsfehler sind gemäß Spezifikation Rollback-Semantiken (rollback_semantics) hinterlegt [SWS_CM_00196].
Dieser Leitfaden basiert ausschließlich auf den Spezifikationsvorgaben von AUTOSAR Adaptive Release R25-11.
Returns the state of the specific method class, which was determined by the last run of E2E_Check() function invoked during the last call of operator()
Initiate a method call (ClientServerOperation. fireAndForget ==FALSE). The method call will return immediately. The caller’s selection of a synchronous or asynchronous behavior to get the method output is achieved by the use of the returned ara::core::Future object which is used to query for method completion and result including possible error.
Returns the state of the specific method class, which was determined by the last run of E2E_Check() function invoked during the last call of operator()
Initiate a method call (ClientServerOperation. fireAndForget ==FALSE). The method call will return immediately. The caller’s selection of a synchronous or asynchronous behavior to get the method output is achieved by the use of the returned ara::core::Future object which is used to query for method completion and result including possible error.
The network binding reported a recoverable communications error or a secure communication failure. In case of a communication timeout this could lead to an uncertain state on the remote server side.
ComErrc::kUnknownApplicationError
rollback_semantics A remote service returned an unconfigured application error.
ComErrc::kServiceNotAvailable
rollback_semantics Service is not available after being previously offered via Offer Service()
ComE2EErrc::kUnspecifiedE2EError
rollback_semantics A remote service returned an unspecified E2E error.
ComErrc::kMinimumSendIntervalViolationError
rollback_semantics Minimum Send Interval violation, because a transmission request for a service instance element (event, field or method call) was issued faster than allowed, i.e., the configured minimum send interval ServiceInterfaceDeploymentElement. minimumSendInterval for the service instance element has not yet expired.
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-medium· 2026-10-13