当前位置: 首页 > news >正文

AutoSar AP中Proxy Class中Methods描述的总结

☞ 返回总目录

5.3.6 Methods(方法)

Proxy Class 与方法包装类

  • 代理类与方法成员:对于远程服务的每种方法,Proxy Class 包含特定于该方法的包装类成员。例如示例中有 Calibrate、Adjust 和 LogCurrentState 三种方法对应的成员。代理类的方法类在特定命名空间 methods 中生成,而 methods 包含在代理命名空间内,代理中的方法成员用于调用远程服务实例提供的方法。

  • 方法包装类的构成:以 Adjust 方法为例,其包装类不复杂,由两部分组成。

    • 内部结构定义:如 Adjust 方法中的 Output 结构体,用于汇总方法的输出(OUT)/ 输入输出(INOUT)参数。
    • 括号运算符重载:用于调用服务方法,它将服务方法的所有输入(IN)/ 输入输出(INOUT)参数作为输入(IN)参数包含在内,并且在 ara::com API 中会把抽象服务方法描述中的 INOUT 参数拆分为一对 IN 和 OUT 参数。
  • 非单向方法的返回值:对非 “单向方法” 调用的返回值是一个 ara::core::Future,模板参数是汇总方法所有输出(OUT)参数的内部结构类型。

5.3.6.1 One - Way aka Fire - and - Forget Methods(单向方法)

  • 单向方法的特点:ara::com 支持 “单向(one - way)” 或 “发射后不管(fire - and - forget)” 方法。这种方法只有输入(IN)参数,没有输出(OUT)参数,不允许引发错误,无法与服务器进行握手 / 同步,客户端 / 调用者无法得知服务器是否处理了该调用。从资源角度看,这种方法在某些通信模式中是轻量级的。

5.3.6.2 Event - Driven vs Polling access to method results(事件驱动与轮询访问方法结果)

  • API 支持与核心类:与事件数据访问类似,为基于事件驱动和轮询的方法提供了 API 支持来访问服务方法调用结果,核心类是 ara::core::Future,它是 C++11/C++14 std::future 类的扩展版本。

  • 事件驱动机制:在事件驱动中,一旦方法调用结果到达,带有代理实例的应用程序作为方法调用者会被 ara::com 实现(Communication Management implementation)通知。ara::com 实现通过设置等待机制(WaitEvent),在方法结果可用时唤醒机制来通知用户。

  • Future 类的接口

    • 枚举类型 future_status:定义了 ready(共享状态已准备好)和 timeout(在指定超时时间过去之前共享状态未准备好)两种状态。
    • 模板类 Future
      • 构造与赋值:提供了默认构造函数、移动构造函数,禁用了拷贝构造函数和拷贝赋值运算符。
      • 获取值与结果:get () 函数获取类型为 T 的值,GetResult () 函数获取包含值或错误的 Result,两者行为与 std::future 函数类似,但 GetResult () 不会抛出异常。
      • 检查有效性:valid () 函数检查 Future 是否具有共享状态。
      • 等待机制:wait () 函数等待值或错误变为可用;wait_for () 函数等待给定时间段直到值或错误可用;wait_until () 函数等待直到给定时间点直到值或错误可用,后两者会根据情况返回 future_status。
      • 注册可调用对象:then () 函数注册一个可调用对象,当 Future 准备好时调用,其返回类型根据注册函数的返回类型确定。
      • 检查异步操作是否完成:is_ready () 函数返回异步操作是否完成。
  • 使用示例与调用方式

    • 基于异常的同步调用示例:在示例中,通过获取服务句柄,使用服务代理对象的 Calibrate 方法调用得到 Future 对象,然后进行阻塞式的 get () 调用获取结果。
    • 多种获取结果的方式:除了阻塞式的 get () 调用外,还有多种获取结果的方式,如不同变体的 wait () 函数,以及通过 then () 注册回调方法。这些方式都是事件驱动的,方法结果的到达事件会导致用户线程恢复执行或调用用户提供的函数。对于一些实时(RT)应用程序,可能不希望被方法调用返回事件激活,此时可以通过 ara::core::Future::is_ready () 进行轮询查看方法调用是否完成,此调用是非阻塞的。

5.3.6.3 Canceling Method Result(取消方法结果)

  • 取消结果的操作:当不再关心通过()操作符调用服务方法返回的 ara::core::future 的结果时,应明确告知通信管理。可以让 ara::core::Future 超出作用域使析构函数被调用,或者在某些情况下(如将返回的 Future 对象分配给了更大作用域的变量),可以用默认构造的实例覆盖变量中的 Future 对象来达到释放资源、停止方法结果的事件等待机制等目的。

相关文章:

AutoSar AP中Proxy Class中Methods描述的总结

☞ 返回总目录 5.3.6 Methods(方法) Proxy Class 与方法包装类 代理类与方法成员:对于远程服务的每种方法,Proxy Class 包含特定于该方法的包装类成员。例如示例中有 Calibrate、Adjust 和 LogCurrentState 三种方法对应的成员。…...

如何在本地计算机中打开远程服务器的Jupyter notebook

1. 在你的本地计算机上打开终端。 2. 使用SSH命令创建一个隧道: ssh -L 8888:localhost:8888 your_usernameyour_server_ip 这里,your_username 是你的服务器用户名,your_server_ip 是你的服务器IP地址。 其中,-L 8888:localhos…...

实习项目|苍穹外卖|day11

Apache ECharts 前端技术。 营业额统计 还是比较简单的。 用户统计 订单统计 以上所有需求。难点在于对时间类的处理&#xff1a; // 接收格式 GetMapping("/turnoverStatistics")ApiOperation("营业额统计")public Result<TurnoverReportVO>…...

easy_cloudantivirus

0x00前言 必须安装在virtualbox 攻击机&#xff1a;kali 靶机 easy_cloudantivirus 链接&#xff1a; https://www.vulnhub.com/entry/boredhackerblog-cloud-av,453/ 0x01信息搜集 经过测试发现靶场IP为192.168.56.106 进一部对IP搜集信息 发现8080端口youhttp服务。…...

python中Web API 框架

Python 中有几个非常流行的 Web API 框架&#xff0c;它们让你可以轻松地构建和部署高效的 Web API。下面我将为你介绍几个最受欢迎的 Python Web API 框架&#xff0c;及其使用方法和特点。 1. FastAPI FastAPI 是一个现代、快速&#xff08;非常高性能&#xff09;的 Web 框…...

Linux(6)--CentOS目录

文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑)&#xff0c;然后C盘、D盘。 Linux系统的根目录是/&#xff0c;我们可以使用cd /进入根目录&#xff0c;然后使…...

标准C++(二)

一、名字空间 什么是名字空间 在C语言中定义的全局变量、函数、结构、联合、枚举、枚举值、宏都在全局作用域下&#xff0c;所以当项目比较庞大时&#xff0c;非常容易造成命名冲突&#xff08;以模块名作前缀、后缀&#xff09;&#xff0c;所以C中选择把全局作用域进行拆分…...

硬件工程师笔试面试——保险丝

目录 10、保险丝 10.1 基础 保险丝原理图 保险丝实物图 10.1.1 概念 10.1.2 保险丝的工作原理 10.1.3 保险丝的主要类型 10.1.4 保险丝的选择和使用注意事项 10.2 相关问题 10.2.1 保险丝的额定电流和额定电压是如何确定的? 10.2.2 保险丝的熔断速度对电路保护有何…...

本地安装Ollama+WebUI

本地安装OllamaWebUI B站教程地址&#xff1a;https://www.bilibili.com/video/BV1Kz421h7Jk/?spm_id_from333.337.search-card.all.click&vd_source42b07826977d09765ec11b9fa06715e5 一、下载Ollama https://ollama.com/download 支持mac、linux、windows 选择在ubu…...

请求响应-05.请求-日期参数JSON参数

一.日期参数 当浏览器发起的请求参数类型是日期参数时&#xff0c;我们通常使用LocalDateTime对象来接收&#xff0c;前面使用DateTimeFormat注解来完成日期的格式转换&#xff08;日期时间格式有多种&#xff0c;需要哪种就设置为哪种&#xff1a;如yyyy-MM-dd HH:mm:ss&…...

CSS学习路线

CSS学习路线大全及面试常见题目可以归纳为以下几个部分&#xff1a; CSS学习路线大全 CSS基础 引入CSS的方式&#xff1a;外部样式表、内部样式表、内联样式。CSS选择器&#xff1a;包括ID选择器、类选择器、标签选择器、后代选择器、子选择器、相邻兄弟选择器、兄弟选择器、…...

Linux memcg lru lock提升锁性能

目录 内核关于per memcg lru lock的重要提交&#xff1a; 计算虚拟地址转换基本机制 问题背景 swap换入流程 时奎亮的per memcg lru lock分享视频 内核关于per memcg lru lock的重要提交&#xff1a; f9b1038ebccad354256cf84749cbc321b5347497 6168d0da2b479ce25a4647d…...

【spring】引入 Jackson 依赖 对java对象序列号和反序列化

Jackson Jackson 是一个非常流行的 Java 序列化/反序列化库,用于将 JSON 转换为 Java 对象,或者将 Java 对象转换为 JSON。要在你的 pom.xml 文件中引入 Jackson 依赖,你可以按照下面的步骤进行操作。引入 Jackson 依赖 通常,Jackson 核心库包含以下三个部分: jackson-dat…...

算法面经手撕系列(3)--手撕LayerNormlization

LayerNormlization 在许多的语言模型如Bert里&#xff0c;虽然都是说做的LayerNormlization&#xff0c;但计算均值和方差只会沿着channel维度做&#xff0c;并不是沿着seq_L和channel维度一起做&#xff0c;参考:BERT用的LayerNorm可能不是你认为的那个Layer Norm  LayerNorm…...

出厂非澎湃OS手机解BL锁

脚本作者&#xff1a;酷安mlgmxyysd 脚本项目链接&#xff1a;https://github.com/MlgmXyysd/Xiaomi-HyperOS-BootLoader-Bypass/ 参考 B站作者&#xff1a;蓝空穹 https://www.bilibili.com/read/cv33210124/ 其他参考&#xff1a;云墨清风、水墨青竹、Magisk中文网 决定解BL…...

Go语言错误处理之道:优雅地应对程序中的问题

错误处理是任何编程语言中的关键部分&#xff0c;Go语言以其独特的错误处理机制而著称。对于初学者来说&#xff0c;理解Go语言中的错误处理对于编写健壮和可靠的程序至关重要。 为什么需要错误处理 在编程中&#xff0c;错误处理是必不可少的&#xff0c;因为程序可能会遇到…...

LIMS实验室管理系统的特点

LIMS实验室管理系统在实验室管理中发挥着不可或缺的作用。首要特点是其强大的自动化数据管理功能&#xff0c;该系统能够无缝集成实验室从样品接收到测试结果录入与存储的全过程&#xff0c;显著提升了数据的准确性和可靠性&#xff0c;减少了人为错误的可能性。 流程优化是LI…...

vue之 package.json和package-lock.json

一、package.json 定义了当前项目所需要引用的各个模块&#xff0c;可以手工修改配置&#xff0c;也可以删除后&#xff0c;使用npm init命令重新自动生成。 但是该文件只锁定大版本号&#xff0c;也就是版本号的第一位&#xff0c;所以你会发现两个文件中同一个包的版本号不一…...

android 老项目中用到的jar包不存在,通过离线的方法加载

1、之前的项目用的jar包&#xff0c;已经不在远程仓库中&#xff0c;只能手工去下载&#xff0c;并且安装。 // implementation com.github.nostra13:Android-Universal-Image-Loader // implementation com.github.lecho:hellocharts-android:v1.5.8 这…...

每天五分钟玩转深度学习框架PyTorch:梯度下降之学习率衰减

本文重点 我们前面学习了优化器optim,然后学习了为神经网络不同层设置不同的学习率,本节课程我们讲解学习率衰减的方法,也就是说如何在训练过程中动态的修改学习率,本文介绍两种方法。本文是学习第6步(优化器) 为什么要进行学习率衰减 对于一阶梯度进行优化的方法而言,…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

WebRTC从入门到实践 - 零基础教程

WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC&#xff1f; WebRTC&#xff08;Web Real-Time Communication&#xff09;是一个支持网页浏览器进行实时语音…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...

新版NANO下载烧录过程

一、序言 搭建 Jetson 系列产品烧录系统的环境需要在电脑主机上安装 Ubuntu 系统。此处使用 18.04 LTS。 二、环境搭建 1、安装库 $ sudo apt-get install qemu-user-static$ sudo apt-get install python 搭建环境的过程需要这个应用库来将某些 NVIDIA 软件组件安装到 Je…...