D-Bus:没有 ObjectManager 的导出对象
Posted
技术标签:
【中文标题】D-Bus:没有 ObjectManager 的导出对象【英文标题】:D-Bus: Export object without ObjectManager 【发布时间】:2012-03-18 20:45:50 【问题描述】:我想创建一个对象并将其导出到 D-Bus。更确切地说,我正在使用 gdbus 并使用 gdbus-codegen 生成对象的代码。
glib 页面上的示例(动物和猫对象)仅显示了如何使用 objectmanager 导出对象。 D-Bus 规范建议仅在需要管理多个对象时才使用 ObjectManager。因为我只有一个对象,所以我不想使用 ObjectManager 的开销。
在我的应用程序(托管对象)中,我已经:
打开连接“g_bus_own_name”
获取总线获取回调:'on_bus_acquired'
我现在应该做什么来创建和导出我的对象?
当我调用 '..._skeleton_new()
' 时,我想我正在创建一个新的 'service-side' 对象,这是正确的吗?
'g_dbus_connection_register_object
' 是正确的方法吗?如果是的话,有什么好的例子可以传递我必须传递的所有参数吗?
我希望有人可以帮助我:)
最好的问候 让-皮埃尔
【问题讨论】:
我想我找到了我正在寻找的东西。我没见过的功能是'g_dbus_interface_skeleton_export'!现在我又开心了:) 你可以回答你自己的问题,甚至批准它。 【参考方案1】:我认为现在回复为时已晚,但可能对不想回复的其他人有用
使用GDBusObjectManager
。
使用..._skeleton_new();
创建的接口对象无需注册,使用g_dbus_interface_skeleton_export();
导出即可
我和你有同样的要求,对注册与否感到困惑。
最后用一些代码分析发现g_dbus_interface_skeleton_export()
在内部注册接口对象。
谢谢 阿鲁恩
【讨论】:
我对你的回答有点困惑,所以向其他人澄清一下。使用..._skeleton_new();
创建您的对象,然后通过g_dbus_interface_skeleton_export()
导出它以上是关于D-Bus:没有 ObjectManager 的导出对象的主要内容,如果未能解决你的问题,请参考以下文章
FOSUserBundle 上的错误,传递的参数必须是 ObjectManager 的实例
Symfony2 中 ObjectManager 和 EntityManager 的区别?
RESTKit:重用 objectManager 来制作后续的 POST