DBusConnectionStatusEvent: AVAILABLE on subscribe if isConnected
authorAleksandar Kanchev <kanchev@itestra.com>
Fri, 22 Feb 2013 12:42:43 +0000 (13:42 +0100)
committerAleksandar Kanchev <kanchev@itestra.com>
Wed, 27 Feb 2013 13:00:47 +0000 (14:00 +0100)
Same behaviour as ProxyStatusEvent

src/CommonAPI/DBus/DBusConnection.cpp
src/CommonAPI/DBus/DBusConnection.h

index c468dbc..dc9f798 100644 (file)
 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();
index 141dbb5..b023b39 100644 (file)
 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_;
 };