5

完了するのに膨大な時間(約3分)を必要とするメソッドを公開するDBusサーバーがあります。クライアントは、このメソッドへの同期呼び出しを実行します。

問題は、正確に25秒後に、「応答を受信しなかった」ためにクライアントがエラーをスローすることです。

残念ながら、クライアントを変更できないため、本来のように呼び出しを非同期にすることはできません。

サーバー構成でこの行を使用しようとしました:

<limit name = "reply_timeout">240000</limit>

しかし、状況は変わりません。

何か案が?

4

1 に答える 1

6

このlimitパラメーターは、関連するプロセスの1つにすぎないバスデーモンを構成します。その他はクライアントとサーバーであり、両端で使用される特定のD-Busライブラリには、同期メッセージのデフォルトのタイムアウトがある場合があります。そして、25秒は確か _DBUS_DEFAULT_TIMEOUT_VALUEにlibdbus、Cリファレンス実装にあります。

クライアントで、たとえばdbus_connection_send_with_reply_and_blockでタイムアウトを変更する方が、APIを非同期に変更するよりも簡単です。

于 2012-10-17T21:33:45.340 に答える