当前位置: 首页 > 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步(优化器) 为什么要进行学习率衰减 对于一阶梯度进行优化的方法而言,…...

智能家居配上高颜值UI,瞬间感觉消费不起了呢

高颜值的UI设计可以给智能家居产品带来奢华和高端的感觉&#xff0c;为大家分享一波搞颜值界面。 高颜值的智能家居界面设计可以带来以下优势和好处&#xff1a; 用户体验提升&#xff1a; 高颜值的界面设计可以提升用户的视觉享受和满意度。精美的界面设计可以给用户带来愉…...

Winform登录实现及工具栏切换

1、登录实现 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace LoginApp {public par…...

Git bash使用

将本地文件推送到github上 先在所在文件夹进行初始化 git init绑定你的远程仓库 git remote add origin URL 随即 git add 指定文件 ——将工作区域中的文件添加到缓冲区 git commit -m【提交附带的信息】 git push origin master 推送到远程仓库 推送的时候可能会出现一些情…...

Java入门程序-HelloWorld

Java程序开发的三个步骤 1.编写代码得到 .java 源代码文件 2.使用javac编译得到 .class 字节码文件 3.使用java运行 注意事项 建议代码文件名全英文&#xff0c;首字母大写&#xff0c;满足驼峰命名法&#xff0c;源代码文件的后缀必须是.java 开发HelloWorld程序 &…...

计算机人工智能前沿进展-大语言模型方向-2024-09-12

计算机人工智能前沿进展-大语言模型方向-2024-09-12 1. PharmaBench: Enhancing ADMET benchmarks with large language models Z Niu, X Xiao, W Wu, Q Cai, Y Jiang, W Jin, M Wang… - Scientific Data, 2024 大语言模型在药物发现中的应用&#xff1a;PharmaBench 文章由…...

Android MediaPlayer + GLSurfaceView 播放视频

Android使用OpenGL 播放视频 概述TextureView的优缺点OpenGL的优缺点 实现复杂图形效果的场景参考 概述 在Android开发中&#xff0c;使用OpenGL ES来渲染视频是一种常见的需求&#xff0c;尤其是在需要实现自定义的视频播放界面或者视频特效时。结合MediaPlayer&#xff0c;我…...

gitee远程仓库OPEN GIT BASH HERE从错误中学习

推荐一个ai软件&#xff08;搜索器搜索kimi&#xff09;&#xff0c;是一个ai&#xff0c;有什么错误跟着一步步解决就可以了 当你创建一个仓库 会出现这些 打开这个窗口跟着敲就行了 到这里为止我还没出现错误&#xff0c;后面我把remote add添加远程仓库的地址输错地址了 所…...

如何查看当前系统中所有具有sudo权限的用户?

要查看当前系统中所有具有 sudo 权限的用户&#xff0c;你可以使用以下方法&#xff1a; 方法一&#xff1a;查看 /etc/sudoers 文件 你可以直接查看 /etc/sudoers 文件&#xff0c;找到具有 sudo 权限的用户和用户组。请使用 visudo 命令来编辑和查看该文件&#xff0c;因为…...

在线制作PPT组织架构图!这个AI工具简单又好用!

ppt组织架构图如何制作&#xff0c;用哪个软件好&#xff1f; 在现代商业世界中&#xff0c;组织架构图是展示公司结构和层级关系的重要工具&#xff0c;譬如内部沟通或者对外展示等场合下&#xff0c;一个精美且清晰的组织架构图都能有效传达信息&#xff0c;提升企业形象。 …...

Mysql 视图存储过程触发器

初识&#xff1a; 在 MySQL 中&#xff0c;视图(View)、存储过程(Stored Procedure)和触发器(Trigger)是用于管理和操作数据库的高级功能。它们各自有不同的用途和优势。 2. 视图 (View) 视图是一个虚拟表&#xff0c;它是从一个或多个表中获取数据的结果。视图并不存储数据本…...