GDBUS用フレームワーク

 

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を");

 

おすすめ

転載: blog.csdn.net/qq_16810885/article/details/93976267