QDBusServiceWatcher Class

QDBusServiceWatcherクラスは、ユーザーがバス・サービスの変更を監視することを可能にします。詳細...

Header: #include <QDBusServiceWatcher>
CMake: find_package(Qt6 REQUIRED COMPONENTS DBus)
target_link_libraries(mytarget PRIVATE Qt6::DBus)
qmake: QT += dbus
Inherits: QObject

パブリック・タイプ

flags WatchMode
enum WatchModeFlag { WatchForRegistration, WatchForUnregistration, WatchForOwnerChange }

プロパティ

パブリック関数

QDBusServiceWatcher(QObject *parent = nullptr)
QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)
virtual ~QDBusServiceWatcher()
void addWatchedService(const QString &newService)
QBindable<QDBusServiceWatcher::WatchMode> bindableWatchMode()
QBindable<QStringList> bindableWatchedServices()
QDBusConnection connection() const
bool removeWatchedService(const QString &service)
void setConnection(const QDBusConnection &connection)
void setWatchMode(QDBusServiceWatcher::WatchMode mode)
void setWatchedServices(const QStringList &services)
QDBusServiceWatcher::WatchMode watchMode() const
QStringList watchedServices() const

シグナル

void serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)
void serviceRegistered(const QString &serviceName)
void serviceUnregistered(const QString &serviceName)

詳細説明

QDBusServiceWatcherオブジェクトは、バス上のサービス名の所有者変更をアプリケーションに通知するために使用できます。3つのウォッチ・モードがあります:

  • サービス登録の監視のみ。
  • サービス登録のみを監視。
  • あらゆる種類のサービスの所有権変更を監視する(デフォルト・モード)。

作成されたり削除されたりするだけでなく、登録解除/登録操作が行われなくても、サービスの所有者が変更されることがあります。そのため、serviceRegistered() およびserviceUnregistered() シグナルは、そのような場合には発生しません。

このクラスは、QDBusConnectionInterface::serviceOwnerChanged() シグナルを使用するよりも効率的です。

サービス名の最後に'*'を付けると、指定したネームスペース内のすべてのサービス名にマッチします。

たとえば、"com.example.backend1*" は、次のようにマッチします。

  • com.example.backend1
  • com.example.backend1.foo
  • com.example.backend1.foo.bar

同じドメインのサブストリングはマッチしません。つまり、"com.example.backend12 "です。

QDBusConnectionも参照

メンバ型ドキュメント

enum QDBusServiceWatcher::WatchModeFlag
flags QDBusServiceWatcher::WatchMode

QDBusServiceWatcher は 3 種類のウォッチモードをサポートしており、このフラグで設定します:

定数説明
QDBusServiceWatcher::WatchForRegistration0x01サービス登録のみを監視し、他のサービスの所有権変更に関連するシグナルは無視します。
QDBusServiceWatcher::WatchForUnregistration0x02サービス登録解除のみを監視し、他のサービス所有権変更に関連するシグナルは無視する。
QDBusServiceWatcher::WatchForOwnerChange0x03あらゆる種類のサービス所有権の変更を監視する。

WatchMode型はQFlags<WatchModeFlag>のtypedefである。WatchModeFlag値のORの組み合わせを格納する。

プロパティの説明

[bindable] watchMode : WatchMode

注: このプロパティは、QProperty バインディングをサポートしています。

このプロパティは、このQDBusServiceWatcher オブジェクトの現在のウォッチ・モードを保持する。

このプロパティのデフォルト値は、QDBusServiceWatcher::WatchForOwnershipChange です。

[bindable] watchedServices : QStringList

注釈 このプロパティは、QProperty バインディングに対応しています。

このプロパティは、監視するサービスのリストを保持します。

注: setServicesWatched() を使用してこのリストを変更することは、高価な操作です。可能であれば、addWatchedService() やremoveWatchedService() を使用して変更することをお勧めします。

メンバ関数の説明

[explicit] QDBusServiceWatcher::QDBusServiceWatcher(QObject *parent = nullptr)

QDBusServiceWatcher オブジェクトを作成します。setConnection() で接続を設定するまで、このオブジェクトはシグナルを発しないことに注意してください。

parent パラメーターは、このオブジェクトの親を設定するためにQObject に渡されます。

QDBusServiceWatcher::QDBusServiceWatcher(const QString &service, const QDBusConnection &connection, QDBusServiceWatcher::WatchMode watchMode = WatchForOwnerChange, QObject *parent = nullptr)

QDBusServiceWatcherオブジェクトを作成し、connection 接続にアタッチします。また、この関数は、サービスservice に対するwatchMode の変更の監視を直ちに開始します。

parent パラメータは、このオブジェクトの親を設定するためにQObject に渡されます。

[virtual noexcept] QDBusServiceWatcher::~QDBusServiceWatcher()

QDBusServiceWatcher オブジェクトを破棄し、それに関連付けられたリソースをすべて解放する。

void QDBusServiceWatcher::addWatchedService(const QString &newService)

このオブジェクトが監視するサービスのリストにnewService を追加する。この関数は、setWatchedServices() よりも効率的であるため、サービスの追加には可能な限り使用すべきである。

watchedServices の既存のバインディングを削除します。

QDBusConnection QDBusServiceWatcher::connection() const

このオブジェクトがアタッチされているQDBusConnection を返します。

setConnection()も参照してください

bool QDBusServiceWatcher::removeWatchedService(const QString &service)

このオブジェクトが監視しているサービスのリストからservice を削除します。D-Bus通知は非同期であるため、service に関する配信待ちのシグナルが残っている可能性があることに注意してください。これらのシグナルは、D-Bus メッセージが処理されるたびに発行されます。

watchedServices の既存のバインディングを削除します。

サービスが削除された場合、この関数はtrue を返します。

[signal] void QDBusServiceWatcher::serviceOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner)

このシグナルは、serviceName サービスに関連するサービスの所有者変更があったことをこのオブジェクトが検出するたびに発行されます。oldOwner パラメータには旧所有者名が含まれ、newOwner は新所有者である。oldOwnernewOwner はどちらも一意の接続名である。

このシグナルは、serviceName サービスが登録または登録解除されたときにも発行される。登録されている場合は、oldOwner に空の文字列が格納され、登録されていない場合は、newOwner に空の文字列が格納されます。

所有者が変更されたことを通知されることなく、サービスが登録されているか未登録であるかのみを知る必要がある場合は、これらの操作のために特定のモードを使用することを検討してください。このクラスは、より特殊なモードを使用した方が効率的です。

serviceRegistered() およびserviceUnregistered()も参照

[signal] void QDBusServiceWatcher::serviceRegistered(const QString &serviceName)

このシグナルは、serviceName サービスがバスで利用可能になったことをこのオブジェクトが検出するたびに発行されます。

serviceUnregistered() およびserviceOwnerChanged()参照。

[signal] void QDBusServiceWatcher::serviceUnregistered(const QString &serviceName)

このシグナルは、サービスserviceName がバスから登録解除され、利用できなくなったことを このオブジェクトが検出するたびに発行される。

serviceRegistered() およびserviceOwnerChanged() も参照

void QDBusServiceWatcher::setConnection(const QDBusConnection &connection)

このオブジェクトがアタッチされている D-Bus 接続をconnection に設定します。ウォッチされているすべてのサービスは、この接続に転送されます。

QDBusConnection オブジェクトは参照カウントされることに注意してください:QDBusServiceWatcher は、この接続が存在する間、その参照を保持します。参照カウントがゼロになるまで接続はクローズされないので、このQDBusServiceWatcher オブジェクトが存在する間、すべての通知を確実に受け取ることができます。

connection()も参照のこと

void QDBusServiceWatcher::setWatchedServices(const QStringList &services)

監視対象の D-Bus サービスのリストをservices に設定する。

リスト全体を設定することは、サービスを監視するための以前のルールをすべて削除し、新しいルールを追加することを意味することに注意してください。これは高価な操作であるため、可能であれば避けるべきである。代わりに、リスト内のエントリを操作するために、可能であればaddWatchedService() とremoveWatchedService() を使用する。

watchedServices の既存のバインディングをすべて削除します。

注意: プロパティwatchedServices のセッター関数です。

watchedServices()も参照して ください。

QStringList QDBusServiceWatcher::watchedServices() const

監視対象の D-Bus サービスのリストを返します。

注釈 watchedServices プロパティのゲッター関数。

setWatchedServices() も参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。