基于 GDBus 的 D-Bus 服务例程

从 GLib 2.30 开始,GIO 中高级 D-Bus 支持增加了 GDBusObjectManagerServer, GDBusObjectSkeleton, GDBusInterfaceSkeleton 等类,基于这些类实现 D-Bus 服务可以把 D-Bus 概念中的对象、接口(方法、属性和信号)与 GObject 的中的方法、属性和信号映射起来,使得开发过程中对象间接关系更直观。

GDBusObjectManagerServer 是管理 D-Bus Object 的服务器的类,它可以在给定的 GDBusConnection 上导出 GDBusObjectSkeleton 类型的对象。

GDBusObjectSkeleton 是 D-Bus Object 的骨架类,在开发过程中需要实现的 D-Bus Object 可以从此类派生出来,它可以增加很多的从此类 GDBusInterfaceSkeleton 派生出来的接口类。

GDBusInterfaceSkeleton 是用于导出 GDBusObjectSkeleton 类及子类的方法、属性和信号的接口类,每个实例只能增加到一个 GDBusObjectSkeleton 实例中,在我的实例中又抽象出了一个 HevDBusInterfaceSkeleton 类型,用于在合适的时机将 GDBusInterfaceSkeleton 增加到 GDBusObjectSkeleton 中,并连接信号。

示例代码

Over!

Leave a Reply

Your email address will not be published. Required fields are marked *