结构体 <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> |
用户指南人工智能生成
作为数据结构,为接收端 Proxy 封装异步调用的服务方法的输出参数。
作为数据结构,为接收端 Proxy 封装异步调用的服务方法的输出参数。
结构体 <SI-Namespace>::proxy::methods::<Method>::Output 封装了 AUTOSAR Adaptive Platform([SWS_CM_99333])的 Proxy 服务方法的输出参数。在成功的情况下,调用者在通过 get() 或 GetResult() 解析后,通过返回的 ara::core::Future 获得该结构体(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 “Struct: Output”)。如果在处理期间发生错误,则不会创建 Output 对象,而是通过 Future 上下文提供错误码。通过销毁 Future 对象,客户端可以提前中止正在运行的方法调用。
上下文
结构体 <SI-Namespace>::proxy::methods::<Method>::Output 在 AUTOSAR Adaptive Platform 的通信管理(com)中充当服务方法([SWS_CM_99333])输出参数的结构化封装。在服务使用者(Proxy)端,该类以类型化方式生成,以便将服务提供者确定并经由中间件传输的结果值集中传递给客户端应用程序。在服务提供者(Skeleton)端,存在相应的数据结构用于提供方法返回值([SWS_CM_99556])。主要交互伙伴包括调用的客户端应用程序、Proxy 方法实例以及调用接口返回的 ara::core::Future,后者在成功情况下传输 Output 对象(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 “Struct: Output”)。
生命周期
Output 实例的生命周期直接嵌入在 Adaptive Platform 的异步通信模式中。在 Proxy 上执行方法调用时,运行时环境会创建一个 ara::core::Future,作为后续 Output 对象的容器(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 “Struct: Output”)。实际的结果数据在提供者端生成:处理完成后——无论是在服务方法的主体中同步完成,还是在单独的线程中异步完成——输出参数都被存放在输出结构中,并通过 Promise 传递给关联的 Future(ARAComAPI §6.19 “Returning Future with already set result”)。
一旦结果准备就绪,客户端就通过 get() 或 GetResult() 提取 Output 实例。此时,该对象的所有权转移给调用者;从该时间点起,后续的生命周期大概由调用端应用程序代码负责。 问题 Q-27f51b3c9fb838ed (未决)关于生命周期的一个相关边界条件涉及提前中止:返回的 ara::core::Future 对象的析构函数用于调用者在发出请求后将其取消([SWS_CM_00194])。如果 Future 被提前销毁,这将导致调用被中止,从而不会交付 Output 结构。
使用路径
接收方法输出参数的典型流程包括以下步骤:
- 触发调用:客户端调用代理上的服务方法并立即获取一个
ara::core::Future<Output>(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 “Struct: Output”)。 - 查询结果:客户端在结果上进行同步,或直接调用
get()或GetResult()。若结果已在服务端在Promise上设置,则该调用不会阻塞,而是立即返回Output结构(ARAComAPI §6.19 “Returning Future with already set result”)。 - 处理值:客户端从接收到的结构中读取输出值。解释:结构
Output可能会将方法的所有已定义 out 和 inout 参数作为可自由访问的成员提供。 问题 Q-3a292028627f3c64 (未决)
时序图:代理方法的调用以及通过 Future 接管输出结构。来源:[SWS_CM_99333]、AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 “Struct: Output”、ARAComAPI §6.19 “Returning Future with already set result”。
错误场景
若在处理方法时发生错误,则不会返回常规的 Output 对象。Communication Management 通过特定的错误机制来处理该情况:
- 已检查的应用错误(Checked Errors):若在处理方法调用期间发生已定义的错误,则会在
get()或GetResult()调用的上下文中提供相应的ara::core::ErrorCode([SWS_CM_10371])。 - 基础设施与传输错误:若调用失败,则
ara::core::Future包含相应的错误码,例如ara::core::FutureErrc(AUTOSAR_AP_SWS_CommunicationManagement §8.3.6 “Struct: Output”)或提供者端的ara::com::ComErrc(AUTOSAR_AP_SWS_CommunicationManagement §8.4 “Methods”)。 - 即发即弃方法(Fire-and-Forget):对于没有返回值的方法(即发即弃),不会返回已检查的错误([SWS_CM_90436]);对于此类方法,不存在
Output结构。 - 中止调用:销毁
Future对象会中止正在进行的请求,并阻止提供Output结果([SWS_CM_00194])。
本指南仅基于 Adaptive Release R25-11 规范。
gemini-3.8-flash-low· 2026-10-13 · 德文原文