問題タブ [dbus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
468 参照

dbus - hal プロパティはいつ更新されますか

PropertyNotified シグナル中にハンドラーから org.freedesktop.Hal.Device で GetProperty を呼び出しています。追加または変更されたプロパティに対してのみ GetProperty を呼び出しています。

プロパティの追加中に GetProperty を呼び出すと、org.freedesktop.Hal.NoSuchProperty 例外が発生します。また、変更中に古い値が取得されることも心配しています。

いつ GetProperty を呼び出す必要がありますか? どのような競合状態が関係していますか?

0 投票する
2 に答える
788 参照

java - JavaのDBus-Server?

DBus for Javaのサーバー実装はありますか?クライアントとサービス(サーバーではない)用のライブラリがあります。

0 投票する
6 に答える
7257 参照

linux - Linux のシャットダウンを一時的に防止する

Linux (Fedora 9) コンピュータのバックグラウンドで毎日実行されるバックアップ スクリプトがあります。バックアップの進行中にコンピューターがシャットダウンされると、バックアップが破損する可能性があるため、ユーザーがコンピューターを再起動またはシャットダウンする機能を一時的に無効にする小さなスクリプトを書きたいと思います。

スクリプトが回避不能である必要はありません。これは、システムのユーザーに、バックアップが進行中であり、シャットダウンしてはならないことを知らせるためのものです。DBus Free デスクトップの電源管理仕様で Inhibit メソッドを見てきました: http://people.freedesktop.org/~hughsient/temp/power-management-spec-0.3.html が、システムがアイドル状態の場合にのみシャットダウンを防止します。ユーザーの要求で明示的にではありません。

C/Python/Perl または bash でこれを行う簡単な方法はありますか?

更新:上記の質問を明確にするために、それは複数のユーザーがいるマシンですが、プラグインされたキーボード/マウスを介して順番に使用します。私は、ルートとしてシステムを「ハッキング」するのを止めるようなシステムを探しているわけではありません。しかし、Gnome/GDMメニューからシャットダウンを選択したときにバックアップがまだ実行中であることを私(または別のユーザー)に思い出させるスクリプト

0 投票する
1 に答える
1621 参照

ipc - UnixドメインソケットではないストリームでD-Busを使用できますか?

プロジェクトでDBusを使用しています。DBusの仕様から、低レベルの通信にはUnixドメインソケットを使用していることがわかります。connect()呼び出しが変更されているため、低レベルの通信にUnixドメインソケットを使用したくありません。DBusがサポートしている、使用しない他のタイプの低レベル通信はありますconnect()か?はいの場合、そのモードに切り替える方法は?

0 投票する
3 に答える
18588 参照

windows - Windows 用の D-Bus に相当するもの

Linux/D-Bus のような Windows 用のメカニズムを知っている人はいますか?

ありがとう

0 投票する
6 に答える
5568 参照

python - Python で書かれた DBUS サービスの機能テストを作成する方法は?

(タイトルは「Python で書かれた DBUS サービスの単体テストの書き方」)

dbus-python を使用して DBUS サービスの作成を開始しましたが、テスト ケースの作成に問題があります。

これが私が作成しようとしているテストの例です。setUp() に GLib イベント ループを配置したことに注意してください。ここで問題が発生します。

私の問題は、DBUS 実装では、イベントのディスパッチを開始できるようにイベント ループを開始する必要があることです。一般的なアプローチは、GLib の gobject.MainLoop().start() を使用することです (ただし、誰かがより良い提案を持っている場合、私はこのアプローチと結婚していません)。イベント ループを開始しないと、サービスは引き続きブロックされ、クエリも実行できません。

テストでサービスを開始すると、イベント ループによってテストの完了がブロックされます。qdbus ツールを使用して外部からサービスにクエリを実行できるため、サービスが機能していることはわかっていますが、サービスを開始するテスト内でこれを自動化することはできません。

これを処理するためにテスト内である種のプロセスフォークを行うことを検討していますが、誰かがよりきちんとした解決策を持っているか、少なくともこのようなテストを書くための良い出発点を持っていることを望んでいました.

0 投票する
4 に答える
4526 参照

linux - D-Bus の基本的なトランスポートは何ですか?

D-Bus は、プログラムが通信できるようにします。この IPC はどのように実装されていますか? Unix ドメイン ソケット、共有メモリ + セマフォ、名前付きパイプ、その他の何か? もしかして組み合わせ?

0 投票する
1 に答える
1726 参照

python - 複数のオブジェクトを動的に作成するD-Busサービスを作成するにはどうすればよいですか?

私は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キーを指定し、認証情報がサービスを使用するすべての人で同じであると想定したい場合、これは比較的簡単です。

特に後者の場合、これが本当だとは思いません。

上で引用したドキュメントに基づいて、私は次のようなものがあるはずだと思います:

だから、私の質問:

1)これはどのように扱われるべきですか?

2)もしそうなら、サービスはクライアントがいつ完了したかをどのように知るのでしょうか?サービスが動的に作成されたオブジェクトをクリーンアップできるように、現在のクライアントが接続を切断したかどうかを検出する方法はありますか?また、そもそも個々のオブジェクトをどのように作成すればよいでしょうか。

3)これが処理されるべき方法ではない場合、同様のことを達成するための他のいくつかの提案は何ですか?

私はいくつかのD-Busチュートリアルとさまざまなドキュメントを読み、私が探しているものを見るのに最も近いものについては、上記で引用したものです。ただし、どの例も実際にはこのようなことをしているようには見えないので、どのように進めるかはわかりません。

0 投票する
2 に答える
103 参照

python - HAL で取得できるが、ラベルの取り付けや変更を必要としない方法でデバイスをマークする方法

USBフラッシュデバイスをマウントしたりラベルを変更したりせずにプログラムでテストできる方法でUSBフラッシュデバイスをマークする方法を見つけようとしています。

デバイスの動作や外観がユーザーに変化しないように、デバイスに関して変更できるプロパティはありますか?

Ubuntu Jaunty を実行しています。

0 投票する
8 に答える
3566 参照

linux - D-Bus のようなものを複数の Linux マシンで (おそらくファイアウォールを介して) 動作させるには、どのような良い方法がありますか?

D-Bus 仕様によると、

D-Bus は、アプリケーションが互いに通信するための簡単な方法です...現在、通信するアプリケーションは 1 台のコンピューター上にあります...

D-Bus のようなものが欲しいのですが、複数の Linux マシンで動作するようにしたいのですが、ファイアウォールが関係している可能性があります。たとえば、メール サーバーが重要なメッセージを受信したと判断した場合、自宅のコンピューターが認識できるバスにイベントを投稿し、linpopupウィンドウを起動して応答できるようにしたいと考えています。

私が興味を持っているイベントは比較的まれなので、低パフォーマンスの手法で問題ありません。しかし、車輪の再発明はしたくありません。また、可能な限りシェル スクリプトやその他の高水準言語で記述し、C で記述することはできるだけ少なくしたいと考えています (ただし、それが必要な場合は、C API を呼び出しても構わないと思っています)。

私が D-Bus の公式 Web ページを解釈すると、D-Bus が複数のコンピュータと通信できるようになればいいのですが、うまくいきません

編集:D-Busについて私にとって魅力的なのは、公開と購読のモデルです:

  • 興味深いイベントを観察するマシンは、そのイベントを「システム」に公開します。

  • 特定のイベントに関心のあるマシンは、それらのイベントのみをサブスクライブします。イベントが発生すると、「システム」がマシンに知らせます。

D-Bus では、「システム」は単一のマシンです。複数のマシンで同様のものが必要です。これにより、マシン間の TCP や SMTP 通信などの直接的なソリューションが除外されます。しかし、すべての出版と購読のリクエストを受け取る中央サーバーがあることをうれしく思います。Advanced Message Queuing Protocol (AMQCP)を理解するよりも、独自のプロトコルを作成する方が簡単だと思い始めています。

パフォーマンスは問題ありません。シンプルさは間違いなくオブジェクトです。

もう一度: どのソフトウェアを見ればよいですか?