0

DBus サービスを作成し、それにオブジェクトを追加します。

QDBusConnection connection = QDBusConnection::sessionBus();
connection.registerService(serviceName); // name, e.g. "foo"
QDBusConnection::sessionBus().registerObject(path, object, myoptions);

DBus モニターの「サービス」の下にオブジェクトが表示されます。ここで、オブジェクトをさらに追加したいと思いますが、別のプログラム (関連しているが独立している) からのものです。

connection.registerService(serviceName);サービスが既に存在するため、失敗します。同じサービス名でより多くのオブジェクトを登録するにはどうすればよいですか?

背景: サービスを利用しているクライアントがいます。誰がサービスを提供しているかはわかりませが、サービス名だけはわかります。したがって、それらは常に同じサービス名を参照します。ただし、複数のプロバイダーがサービスを提供する必要があります。

サービス名を使用しないようにしました (空の文字列、オブジェクト パスに依存するだけです)。しかし、に基づくプロキシ

QDBusAbstractInterface(serviceName, path, interfaceName.toUtf8().constData(), connection, parent)

空の ("") では動作しないようですserviceName(正しいですか?)。

4

1 に答える 1

1

できません。dbus への 1 つの接続 == 1 つの名前。接続は通常、UNIX ソケットまたは抽象ソケット (Linux の場合) です。ある種の RPC (または dbus call ) を使用して最初の接続からの呼び出しを他のサービスにプロキシし、最初の接続からの結果も返す必要があります。

于 2015-02-13T00:24:49.467 に答える