gdbus-コード生成--generate-Cコード= libtunerserviceインタフェース-SA.xml:サーバファイルを生成します
gdbus-コード生成--generate-Cコード= libservice-C、-C-生成するオブジェクトマネージャインターフェイス-SA.xml:クライアント・ファイルを生成します
クライアント:
**************クライアント生成されたファイルを追加します****************
(1)によってバス・エージェントを取得します:
com_company_tunerservice_dbus_s_proxy_new_for_bus_sync
コールバック・バインディング(2)シグナル:
g_signal_connect(プロポキシ、 "seek_status"、G_CALLBACK(on_sig_seek_status)、NULL);
*** seek_status ======================> .cのファイルに応じて生成されました
(3)コールバック関数を実装します
に応じて生成された*** on_sig_seek_status ================> .cファイル
輪廻(4)イベント・レポート
ループ= g_main_loop_new(NULL、FALSE)。
g_main_loop_run(ループ)。
g_object_unref(プロポキシ)。
サーバ:
**************追加サーバー側は****************ファイルを生成しました
(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
*** bus_acquired_handler必要性
*** g_Skeleton = com_company_tunerservice_dbus_s_skeleton_new(); ***骨格を確立します
*** g_signal_connect(g_Skeleton、 "ハンドル・セットチューナーステーション"、G_CALLBACK(handle_set_tuner_station)、NULL);
***ハンドルセットチューナー-駅====================>生成された.cファイルサーバ
生成されたパラメータに基づいて*** handle_set_tuner_station ===================> .cファイルサーバ、このコールバック関数を達成するために
g_dbus_interface_skeleton_export(G_DBUS_INTERFACE_SKELETON(g_Skeleton)、========>骨架输出
接続、
"/"、
&PERROR)。
(2)実行バスサービスエージェント
ループ= g_main_loop_new(NULL、FALSE)。
g_print( "g_main_loop_new \ nを");
IF(!ループ= NULL)
{
g_main_loop_run(ループ)。
g_print( "g_main_loop_runの\ nを");
}
g_bus_unown_nameスキーマ(ownname)。
g_print( "g_bus_unown_nameの\ nを");