GDBUS使用框架
(141条消息) GDBUS使用框架_gdbus教程_玩意儿他爸的博客-CSDN博客
服务端生成文件:gdbus-codegen --generate-c-code=libtunerservice interface-S-A.xml
客户端生成文件:gdbus-codegen --generate-c-code=libservice-c --c-generate-object-manager interface-S-A.xml
CLIENT:
**************添加客户端的生成的文件****************
(1)获取总线代理者:
com_company_tunerservice_dbus_s_proxy_new_for_bus_sync
(2)信号与回调函数的绑定:
g_signal_connect(poxy, "seek_status", G_CALLBACK(on_sig_seek_status), NULL);
***seek_status======================>根据生成的.c文件
(3)回调函数的实现
***on_sig_seek_status================>根据生成的.c文件
(4)事件的轮回上报
loop = g_main_loop_new(NULL, FALSE);
g_main_loop_run(loop);
g_object_unref(poxy);
SERVER:
**************添加服务端的生成的文件****************
(1)创建一个总线
guint ownName = g_bus_own_name (G_BUS_TYPE_SYSTEM ,
"com.company.tunerservice.dbus.s",
G_BUS_NAME_OWNER_FLAGS_NONE,
bus_acquired_handler,
name_acquired_handler,
name_lost_handler,
NULL,
NULL);
***bus_acquired_handler、name_acquired_handler、name_lost_handler实现这3个回调函数
***bus_acquired_handler中需要
***g_Skeleton = com_company_tunerservice_dbus_s_skeleton_new();***建立一个骨架
***g_signal_connect(g_Skeleton, "handle-set-tuner-station", G_CALLBACK(handle_set_tuner_station), NULL);
***handle-set-tuner-station====================>根据服务端生成的.c文件
***handle_set_tuner_station===================>参数根据服务端生成的.c文件,实现这个回调函数
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(g_Skeleton),========>骨架输出
connection,
"/",
&pError);
(2)运行总线服务代理
loop = g_main_loop_new(NULL, FALSE);
g_print("g_main_loop_new\n");
if(loop!=NULL)
{
g_main_loop_run(loop);
g_print("g_main_loop_run\n");
}
g_bus_unown_name(ownName);
g_print("g_bus_unown_name\n");
————————————————
版权声明:本文为CSDN博主「玩意儿他爸」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_16810885/article/details/93976267
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2019-04-04 openaml