estructura <SI-Namespace>::proxy::methods::<Method>::Output
struct Output {...};
Structure wrapping the out arguments for a method
| Header-Datei | #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy.h" |
|---|---|
| Forwarding-Header | #include "<SiNamespaceDerivedDirectoryPath>/<SiShortname>_proxy/<SiShortname>_proxy_fwd.h" |
| Scope | class <SI-Namespace>::proxy::methods::<Method> |
Guía del usuarioGENERADO POR IA
Encapsula como estructura de datos los parámetros de salida de un método de servicio invocado asíncronamente para el proxy receptor.
Encapsula como estructura de datos los parámetros de salida de un método de servicio invocado asíncronamente para el proxy receptor.
La estructura <SI-Namespace>::proxy::methods::<Method>::Output encapsula los argumentos de salida de un método de servicio proxy de la AUTOSAR Adaptive Platform ([SWS_CM_99333]). En caso de éxito, el invocador recibe la estructura mediante un ara::core::Future devuelto tras su resolución a través de get() o GetResult() (AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 «Struct: Output»). Si se producen errores durante el procesamiento, no se crea ningún objeto Output, sino que en su lugar se proporciona un código de error a través del contexto del future. Mediante la destrucción del objeto future, el cliente puede cancelar prematuramente una invocación de método en curso.
Contexto
La estructura <SI-Namespace>::proxy::methods::<Method>::Output sirve en la gestión de comunicaciones (com) de la AUTOSAR Adaptive Platform como encapsulación estructurada para los argumentos de salida de un método de servicio ([SWS_CM_99333]). En el lado del consumidor del servicio (proxy), esta clase se genera tipada para entregar a la aplicación cliente, de forma agrupada, los valores de resultado determinados por el proveedor del servicio y transmitidos a través del middleware. En el lado del proveedor del servicio (skeleton) existe una estructura de datos correspondiente para proporcionar el valor de retorno del método ([SWS_CM_99556]). Los interlocutores esenciales son la aplicación cliente invocadora, la instancia del método proxy, así como el ara::core::Future devuelto por la interfaz de invocación, el cual transporta en caso de éxito el objeto Output (AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 «Struct: Output»).
Ciclo de vida
El ciclo de vida de una instancia de Output está integrado directamente en el patrón de comunicación asíncrona de la Adaptive Platform. Al ejecutar una invocación de método en el proxy, el entorno de ejecución crea un ara::core::Future, el cual sirve como contenedor para el posterior objeto Output (AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 «Struct: Output»). Los datos de resultado propiamente dichos se generan en el lado del proveedor: tras finalizar el procesamiento —ya sea de forma síncrona en el cuerpo del método de servicio o asíncrona en un hilo independiente—, los parámetros de salida se depositan en la estructura de salida y se transfieren a través de un Promise al Future correspondiente (ARAComAPI §6.19 «Returning Future with already set result»).
Tan pronto como el resultado está disponible, el cliente extrae la instancia de Output mediante get() o GetResult(). En este proceso, el objeto pasa a ser propiedad del invocador; a partir de este momento, la vida útil restante presumiblemente es responsabilidad del código de aplicación invocador. Pregunta Q-27f51b3c9fb838ed (abierta) Una condición de contorno relevante para el ciclo de vida concierne a la cancelación prematura: el destructor del objeto ara::core::Future devuelto sirve al invocador para cancelar la solicitud tras haberla emitido ([SWS_CM_00194]). Si el future se destruye prematuramente, esto provoca la cancelación de la invocación, de modo que no se produce la entrega de la estructura Output.
Ruta de uso
El flujo típico para la recepción de los parámetros de salida del método comprende los siguientes pasos:
- Desencadenar la invocación: el cliente invoca el método de servicio en el proxy y recibe inmediatamente un
ara::core::Future<Output>(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 «Struct: Output»). - Consultar el resultado: el cliente se sincroniza con el resultado o invoca directamente
get()oGetResult(). Si el resultado ya se estableció en el lado del servidor en elPromise, la invocación no se bloquea, sino que devuelve inmediatamente la estructuraOutput(ARAComAPI §6.19 «Returning Future with already set result»). - Procesar los valores: el cliente lee los valores de salida de la estructura recibida. Interpretación: es de prever que la estructura
Outputproporcione todos los argumentos out e inout definidos del método como miembros de libre acceso. Pregunta Q-3a292028627f3c64 (abierta)
Diagrama de secuencia: invocación de un método proxy y recepción de la estructura Output a través del future. Fuentes: [SWS_CM_99333], AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 «Struct: Output», ARAComAPI §6.19 «Returning Future with already set result».
Escenarios de error
Si se produce un error durante el procesamiento del método, no se devuelve un objeto Output regular. La gestión de comunicaciones maneja esto mediante mecanismos de error específicos:
- Errores de aplicación verificados (Checked Errors): si se produce un error definido durante el procesamiento de la invocación del método, se entrega el
ara::core::ErrorCodecorrespondiente en el contexto de la invocación deget()oGetResult()([SWS_CM_10371]). - Errores de infraestructura y transmisión: si la invocación falla, el
ara::core::Futurecontiene un código de error correspondiente, comoara::core::FutureErrc(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 «Struct: Output») o, en el lado del proveedor,ara::com::ComErrc(AUTOSAR_AP_SWS_CommunicationManagement §8.4 «Methods»). - Métodos Fire-and-Forget: para métodos sin valores de retorno (Fire and Forget) no se notifican errores verificados ([SWS_CM_90436]); para tales métodos no existe una estructura
Output. - Cancelación de la invocación: la destrucción del objeto
Futurecancela la solicitud en curso e impide la provisión de un resultadoOutput([SWS_CM_00194]).
Esta guía se basa exclusivamente en las especificaciones del release R25-11 de Adaptive.
gemini-3.8-flash-low· 2026-10-13 · Original en alemán