From 80f7af067d3cd7cfaa4162c768fa1b03f3dfbccc Mon Sep 17 00:00:00 2001 From: Aleksandar Kanchev Date: Fri, 22 Feb 2013 13:42:43 +0100 Subject: [PATCH] DBusConnectionStatusEvent: AVAILABLE on subscribe if isConnected Same behaviour as ProxyStatusEvent --- src/CommonAPI/DBus/DBusConnection.cpp | 11 +++++++++++ src/CommonAPI/DBus/DBusConnection.h | 9 ++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/CommonAPI/DBus/DBusConnection.cpp b/src/CommonAPI/DBus/DBusConnection.cpp index c468dbc..dc9f798 100644 --- a/src/CommonAPI/DBus/DBusConnection.cpp +++ b/src/CommonAPI/DBus/DBusConnection.cpp @@ -14,6 +14,15 @@ namespace CommonAPI { namespace DBus { +DBusConnectionStatusEvent::DBusConnectionStatusEvent(DBusConnection* dbusConnection): + dbusConnection_(dbusConnection) { +} + +void DBusConnectionStatusEvent::onListenerAdded(const CancellableListener& listener) { + if (dbusConnection_->isConnected()) + listener(AvailabilityStatus::AVAILABLE); +} + DBusObjectPathVTable DBusConnection::libdbusObjectPathVTable_ = { NULL, // no need to handle unregister callbacks @@ -28,6 +37,7 @@ void DBusConnection::dispatch() { DBusConnection::DBusConnection(BusType busType) : busType_(busType), libdbusConnection_(NULL), + dbusConnectionStatusEvent_(this), isLibdbusSignalFilterAdded_(false), stopDispatching_(false) { dbus_threads_init_default(); @@ -36,6 +46,7 @@ DBusConnection::DBusConnection(BusType busType) : DBusConnection::DBusConnection(::DBusConnection* libDbusConnection) : busType_(WRAPPED), libdbusConnection_(libDbusConnection), + dbusConnectionStatusEvent_(this), isLibdbusSignalFilterAdded_(false), stopDispatching_(false) { dbus_threads_init_default(); diff --git a/src/CommonAPI/DBus/DBusConnection.h b/src/CommonAPI/DBus/DBusConnection.h index 141dbb5..b023b39 100644 --- a/src/CommonAPI/DBus/DBusConnection.h +++ b/src/CommonAPI/DBus/DBusConnection.h @@ -18,11 +18,18 @@ namespace CommonAPI { namespace DBus { -class DBusConnection; class DBusObjectManager; class DBusConnectionStatusEvent: public DBusProxyConnection::ConnectionStatusEvent { friend class DBusConnection; + + public: + DBusConnectionStatusEvent(DBusConnection* dbusConnection); + + protected: + virtual void onListenerAdded(const CancellableListener& listener); + + DBusConnection* dbusConnection_; }; -- 2.7.4