私はD-Bus(およびPython、ダブルワーミー!)を初めて使用し、チュートリアルで説明したことを実行するための最良の方法を見つけようとしています。
ただし、テキストエディタアプリケーションは、複数のバス名(たとえば、汎用TextEditorに加えてorg.kde.KWrite)を簡単に所有し、複数のオブジェクト(おそらく、ドキュメントに応じて番号が変わる/ org / kde / document / 4352)を持つことができます。 )、各オブジェクトは、org.freedesktop.DBus.Introspectable、org.freedesktop.BasicTextField、org.kde.RichTextDocumentなどの複数のインターフェースを実装できます。
たとえばflickrapi
、サービスが少数のFlickr APIメソッドを公開できるようにラッパーを作成したいとします(たとえば、urls_lookupGroup()
)。サービスが常に同じAPIキーを指定し、認証情報がサービスを使用するすべての人で同じであると想定したい場合、これは比較的簡単です。
特に後者の場合、これが本当だとは思いません。
上で引用したドキュメントに基づいて、私は次のようなものがあるはずだと思います:
# Get the connection proxy object.
flickrConnectionService = bus.get_object("com.example.FlickrService",
"/Connection")
# Ask the connection object to connect, the return value would be
# maybe something like "/connection/5512" ...
flickrObjectPath = flickrConnectionService.connect("MY_APP_API_KEY",
"MY_APP_API_SECRET",
flickrUsername)
# Get the service proxy object.
flickrService = bus.get_object("com.example.FlickrService",
flickrObjectPath);
# As the flickr service object to get group information.
groupInfo = flickrService.getFlickrGroupInfo('s3a-belltown')
だから、私の質問:
1)これはどのように扱われるべきですか?
2)もしそうなら、サービスはクライアントがいつ完了したかをどのように知るのでしょうか?サービスが動的に作成されたオブジェクトをクリーンアップできるように、現在のクライアントが接続を切断したかどうかを検出する方法はありますか?また、そもそも個々のオブジェクトをどのように作成すればよいでしょうか。
3)これが処理されるべき方法ではない場合、同様のことを達成するための他のいくつかの提案は何ですか?
私はいくつかのD-Busチュートリアルとさまざまなドキュメントを読み、私が探しているものを見るのに最も近いものについては、上記で引用したものです。ただし、どの例も実際にはこのようなことをしているようには見えないので、どのように進めるかはわかりません。