DBus笔记

  1. 包含2套总线:system bus,service bus,权限不同,system bus需要kernel或root权限
  2. dbus daemon进程提供服务,
    有systemd启动dbus daemon,为system bus和service bus分别启动一个daemon。
  3. native object:收发消息的应用需要向dbus注册object(一个或多个),object包括接口、消息类型等定义。
  4. object path:类似文件路径名,也可用域名等,例如:/org/kde/kspread/sheets/3/cells/4/5
  5. object有2种成员:method和signal(广播,有data payload)
  6. interface:dbus支持interface,带namespace,如:org.freedesktop.Introspectable。
    在不同的语言的实现中(不同语言对dbus的封装)有不同的对应机制,如java interface或C++ pure virtual class。
  7. proxy object:
    手动处理method call:创建message,发送msg,等待reply,处理reply。
    使用proxy object:上述步骤会被封装,类似调用本地对象的方法。
// without proxy object
Message message = new Message("/remote/object/path", "MethodName", arg1, arg2);
Connection connection = getBusConnection();
connection.send(message);
Message reply = connection.waitForReply(message);
if (reply.isError()) {} else {Object returnValue = reply.getReturnValue();
}// with proxy object
Proxy proxy = new Proxy(getBusConnection(), "/remote/object/path");
Object returnValue = proxy.MethodName(arg1, arg2);
  1. unique connection name:(类似于ip地址)
    1)app连接bus daemon会分配一个连接名。
    2)在daemon声明周期内连接名不会重用,一个名字只会对应一个app(一个name只能被一个应用own)。
    3)以冒号开头,例如“:34-908”,数字没有含义,只保证唯一性。

  2. well-known name(类似于域名)
    除了unique connection name,应用可申请well-known name。
    例如,com.mycompany.TextEditor,对应object path: /com/mycompany/TextFileManager

  3. well-known name用途
    1)message routing,通过well known name找到接手着
    2)track life-cycle,application exit/crash notification,当app退出时,message bus通知其他应用对应的app name失去owner。
    3)single instance app:通过well-known name检测服务是否已经启动

  4. dbus中server和client仅在创建连接时有不同,建立连接后通信时对称的(双向通信,不区分client,server)。

  5. dbus daemon的监听地址
    1)UNIX domain socket: unxi:path=/tmp/socket_name
    2)tcp/ip socket
    3)默认daemon从环境变量中获取监听地址:
    DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
    4)特例,不使用dbus daemon,需要明确server app和client app,以及它们的地址。
    不是总线机制,一对一通信。

  6. 一个方法的调用链路

Address -> [Bus Name] -> Path -> Interface -> Method
1)[Bus Name],可选,如果没有使用dbus daemon就不需要bus name,相当于点对点通信。
2)interface可选,如果没有interface,则不允许在一个对象上有重命名方法;使用interface,不同的interface中允许有重名方法。
3)Address和Bus Name定位到application;path定位到object(带包名限定对象名,FQDN),提供服务的对象;interface.method定位到具体的执行方法上面的调用链路,相当于:
application . package-name.object . interface . method
  1. 4种message:
    1)method call message
    2)method return message
    3)error message by invoking a method
    4)signal message / event message,广播,单向,一对多

消息分为2类:
1)方法调用,前3种消息,调用和返回双向,一一对应。
2)广播消息,第4中,单向,一发多收。

  1. 函数调用对应各种类型的消息。

  2. 消息格式:
    1)header,包括多个field。
    2)body,包括多个argument。

  3. 内部检查接口:org.freedesktop.DBus.Introspectable
    只有一个方法:Introspect():返回一个xml串,描述对象的接口、方法和信号等信息。

  4. 数据量限制:一次最大发送32K。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/83226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Unity插件】实现多人在线游戏——Mirror插件的使用介绍

文章目录 前言导入Mirror插件 简单介绍一、RPC调用二、错误注意 基本使用一、创建场景的网络管理器二、创建一个玩家三、添加玩家初始生成位置四、玩家控制五、同步摄像机六、同步不同角色的名字和颜色修改七、同步动画八、同步子弹方法一方法二 九、聊天功能十、场景同步切换十…

新版kafka可视化界面组件

二、安装kafka可视化客户端工具(kafka tool 2) 1、下载安装 在官网中找到对应自己电脑系统的版本: kafka Tool2官网下载地址: Offset Explorer 这个方案是为Kafka依赖zookeeper提供的可视化解决方案。 前言 在早期使用kafka的…

Flask-flask中的后台分页查询实现

在后台查询数据并在前台展示的场景中,当数据量较大时,页面加载会非常缓慢,此时建议使用后台分页查询的形式。在flask中,基于Flask-SQLAlchemy可以使用以下方式实现。 方法一: Flask-SQLAlchemy 提供了一个 paginate(…

现代循环神经网络-门控循环单元(GRU)

理论 门控隐状态 门控循环单元与普通的循环神经网络之间的关键区别在于: 前者支持隐状态的门控。 这意味着模型有专门的机制来确定应该何时更新隐状态, 以及应该何时重置隐状态。 这些机制是可学习的,并且能够解决了上面列出的问题。 例如&…

双目立体视觉

#理想模型图 其中: b 为基线,即两个相机原点之间的距离 ; fl和fr 分别为左右相机的焦距,理想的双目相机flfrf ; cl和cr 分别为左右相机的光心,理想的双目相机clcr ; xl和xr 分别为空间中的一点…

2023/09/15 qt day1

代码实现图形化界面 #include "denglu.h" #include "ui_denglu.h" #include <QDebug> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButton> denglu::denglu(QWidget *parent): QMainWindow(p…

【AI】机器学习——支持向量机(非线性及分析)

5. 支持向量机(线性SVM) 文章目录 5.4 非线性可分SVM5.4.1 非线性可分问题处理思路核技巧核函数特点 核函数作用于SVM 5.4.2 正定核函数由 K ( x , z ) K(x,z) K(x,z) 构造 H \mathcal{H} H 空间步骤 常用核函数 5.5 SVM参数求解算法5.6 SVM与线性模型关系 5.4 非线性可分SVM …

Spark SQL【基于泰坦尼克号生还数据的 Spark 数据分析处理】

前言 昨天实验课试着做了一个 Spark SQL 小案例&#xff0c;发现好多内容还是没有掌握&#xff0c;以及好多书上没有的内容需要学习。 一、数据准备 csv 文件内容部分数据展示&#xff1a; PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarke…

聊天机器人

收集窗帘相关的数据 可以用gpt生成&#xff0c;也可以用爬虫 图形化界面 gradio 向量数据库 faiss python代码 import gradio as gr import random import timefrom typing import Listfrom langchain.embeddings.openai import OpenAIEmbeddings from langchain.vectorstor…

揭秘:WhatsApp的注册策略

WhatsApp账号的注册方式可以分为两种&#xff1a;实体卡注册和虚拟卡注册。实体卡注册是指使用个人手机卡完成注册&#xff0c;而虚拟卡注册则通过前面提到的对接平台来完成的。 账号注册问题一直是导致WhatsApp账号永久封禁的主要原因。由于WhatsApp广泛为群发获客等用途之一…

设计方法编写测试用例---思路分析

测一四年我在YX公司带测试团队&#xff0c;一个用例评审的会议上&#xff0c;一不小心超常发挥&#xff0c;结果卡在了一个用例设计方法上&#xff0c;印象非常深刻&#xff0c;当时的业务场景是支付方式的选择和优惠方案。 在后来的工作中&#xff0c;也曾几次遇到需要选择合…

Docker 安装

Docker 官网&#xff1a;Docker: Accelerated Container Application Development Docker Hub官网&#xff1a;https://hub.docker.com/ 前提说明 CentOS Docker 安装 前提条件 目前&#xff0c;CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上&…

软件定制开发具有以下特点|APP搭建|小程序

软件定制开发具有以下特点|APP定制|小程序 一、快速响应用户需求 软件定制开发的优势在于&#xff0c;它可以快速响应用户的需求&#xff0c;因为它是在现有软件的基础上进行功能定制、界面定制、服务定制等改造&#xff0c;而不是从零开始进行重新设计与开发&#xff0c;所以…

vscode快捷键大全中英文

vscode快捷键大全中英文 源文件下载链接

卷运维不如卷网络安全

最近发现很多从事运维的选择了辞职&#xff0c;重新规划自己的职业发展方向。运维工程师这个岗位在IT行业里面确实是处于最底层的&#xff0c;不管什么环节出现问题&#xff0c;基本都是运维背锅。背锅也就罢了&#xff0c;薪资水平也比不上别的岗位。 一般运维的薪资水平大多数…

根据商品ID获得淘宝商品详情, 获得淘宝商品详情高级版,获得淘宝商品评论, 获得淘宝商品快递费用 ,获得淘口令真实,批量获得淘宝商品上下架时间)

参数说明 通用参数说明 参数不要乱传&#xff0c;否则不管成功失败都会扣费url说明 https://api-gw.…….cn/平台/API类型/ 平台&#xff1a;淘宝&#xff0c;京东等&#xff0c; API类型:[item_search,item_get,item_search_shop等]version:API版本key:调用key,测试key:test_…

Google Sign In error 12500

接入Google登录遇到12500报错&#xff0c;网上查到的原因是后台配置包的签名哈希值不正确&#xff0c;但是我们的应用并没有使用firebase管理&#xff0c;尝试多次之后终于找到了解决方法&#xff1a;在开发者后台应用管理界面&#xff0c;创建一个新的凭据【类型为Andorid】&a…

外国电影字幕翻译,怎么把英文字幕翻译成中文字幕?

我们知道&#xff0c;在国内外文化交流中&#xff0c;影视字幕翻译扮演着重要的角色&#xff0c;不仅让观众领略到异国风情&#xff0c;更能达到文化传播的功能。那么&#xff0c;针对外国电影字幕翻译&#xff0c;怎么把英文字幕翻译成中文字幕呢&#xff0c;有什么好的技巧呢…

特斯拉Dojo超算:AI训练平台的自动驾驶与通用人工智能之关键

特斯拉公开Dojo超算架构细节&#xff0c;AI训练算力平台成为其自动驾驶与通用人工智能布局的关键一环 在近日举行的Hot Chips 34会议上&#xff0c;特斯拉披露了其自主研发的AI超算Dojo的详细信息。Dojo是一个可定制的超级计算机&#xff0c;从芯片到系统全部由特斯拉自主设计…

RT Preempt linux学习笔记

RT Preempt linux学习笔记 一、实时操作系统&#xff08;Realtime Operating System&#xff09; 1. 什么是实时操作系统 A real-time system is a time-bound system which has well-defined, fixed time constraints. Processing must be done within the defined constra…