Do not unnecessarily subscribe to PropertyChanged signal.
authorOssama Othman <ossama.othman@intel.com>
Fri, 6 Dec 2013 21:24:14 +0000 (13:24 -0800)
committerOssama Othman <ossama.othman@intel.com>
Fri, 6 Dec 2013 21:24:14 +0000 (13:24 -0800)
Change-Id: I17b7b65559369667e0634ffdbd715c03b6409036
Signed-off-by: Ossama Othman <ossama.othman@intel.com>
14 files changed:
plugins/connman/clock.cpp
plugins/connman/clock.hpp
plugins/connman/connman.cpp
plugins/connman/connman.hpp
plugins/connman/connman_manager.cpp
plugins/connman/connman_service.cpp
plugins/connman/connman_service.hpp
plugins/connman/connman_technology.cpp
plugins/connman/connman_technology.hpp
plugins/connman/registration.cpp
plugins/connman/service.cpp
plugins/connman/service.hpp
plugins/connman/technology.cpp
plugins/connman/technology.hpp

index f0ff628..fcb8fa3 100644 (file)
@@ -30,6 +30,7 @@
 #include <settingsd/glib_traits.hpp>
 #include <settingsd/json_glib_traits.hpp>
 #include <settingsd/unique_ptr.hpp>
+#include <settingsd/dbus_signal_callback.hpp>
 
 #include <cstring>
 #include <boost/lexical_cast.hpp>
 
 ivi::settings::clock::clock(GDBusConnection * connection,
                             event_callback const & e)
-  : connman_("net.connman.Clock", "/", connection, e)
+  : connman_("net.connman.Clock", "/", connection)
+  , event_callback_(e)
+  , subscription_id_(
+    g_dbus_connection_signal_subscribe(
+      connection,
+      nullptr,
+      connman_.interface_name(),
+      "PropertyChanged",
+      connman_.object_path(),
+      nullptr,
+      G_DBUS_SIGNAL_FLAGS_NONE,
+      on_dbus_signal,
+      &event_callback_,
+      nullptr))
 {
 }
 
 ivi::settings::clock::~clock()
 {
+  g_dbus_connection_signal_unsubscribe(
+    connman_.connection(),
+    subscription_id_);
 }
 
 std::string const &
index 636c6b9..64a1796 100644 (file)
@@ -36,6 +36,7 @@
 
 #include "connman.hpp"
 #include <settingsd/plugin.hpp>
+#include <settingsd/event_callback.hpp>
 
 #include <json-glib/json-glib.h>
 
@@ -119,6 +120,12 @@ namespace ivi
       /// Underlying connman proxy.
       connman connman_;
 
+      /// Callback through which events will be sent to clients.
+      event_callback event_callback_;
+
+      /// PropertyChanged signal subscription ID.
+      guint const subscription_id_;
+
     };
 
   }
index 707111b..f2b586a 100644 (file)
@@ -28,7 +28,6 @@
 
 #include <settingsd/glib_traits.hpp>
 #include <settingsd/unique_ptr.hpp>
-#include <settingsd/dbus_signal_callback.hpp>
 
 #include <cstring>
 #include <string>
 
 ivi::settings::connman::connman(char const * interface,
                                 char const * path,
-                                GDBusConnection * connection,
-                                event_callback const & e)
+                                GDBusConnection * connection)
   : proxy_(nullptr)
-  , event_callback_(e)
-  , subscription_id_(0)
 {
   static char const name[] = "net.connman";  // Service
 
@@ -67,31 +63,12 @@ ivi::settings::connman::connman(char const * interface,
 
     throw std::runtime_error(error->message);
   }
-
-  // Listen for changes to properties.
-  subscription_id_ =
-      g_dbus_connection_signal_subscribe(
-        connection,
-        nullptr,
-        interface,
-        "PropertyChanged",
-        path,
-        nullptr,
-        G_DBUS_SIGNAL_FLAGS_NONE,
-        on_dbus_signal,
-        &event_callback_,
-        nullptr);
 }
 
 ivi::settings::connman::~connman()
 {
-  if (proxy_ != nullptr) {
-    g_dbus_connection_signal_unsubscribe(
-      g_dbus_proxy_get_connection(G_DBUS_PROXY(proxy_)),
-      subscription_id_);
-
+  if (proxy_ != nullptr)
     g_object_unref(proxy_);
-  }
 }
 
 GVariant *
index de4a7b4..e722c99 100644 (file)
@@ -28,8 +28,6 @@
 #ifndef IVI_SETTINGS_CONNMAN_HPP
 #define IVI_SETTINGS_CONNMAN_HPP
 
-#include <settingsd/event_callback.hpp>
-
 #include <gio/gio.h>
 
 
@@ -55,13 +53,10 @@ namespace ivi
        * @param[in] interface  Connman D-Bus interface.
        * @param[in] path       Connman D-Bus object path.
        * @param[in] connection Underlying D-Bus connection.
-       * @param[in] e          Callback through which events will be
-       *                       sent to clients.
        */
       connman(char const * interface,
               char const * path,
-              GDBusConnection * connection,
-              event_callback const & e);
+              GDBusConnection * connection);
 
       /// Destructor.
       ~connman();
@@ -112,12 +107,6 @@ namespace ivi
       /// The proxy used to access the Connman D-Bus API.
       GDBusProxy * proxy_;
 
-      /// Callback through which events will be sent to clients.
-      event_callback event_callback_;
-
-      /// PropertyChanged signal subscription ID.
-      guint subscription_id_;
-
     };
 
   }
index aa15d55..15ad831 100644 (file)
@@ -108,8 +108,7 @@ ivi::settings::connman_manager::connman_manager(
   event_callback const & e)
   : connman_("net.connman.Manager",     // Interface
              "/",                       // Object path
-             connection,
-             e)
+             connection)
   , data_(connection, e)
   , technology_added_id_(subscribe_to_signal(connection,
                                              "TechnologyAdded",
@@ -214,7 +213,8 @@ ivi::settings::connman_manager::~connman_manager()
     }
   }
 
-  // Unsubscribe from ServicesChanged signal.
+  // Unsubscribe from ServicesChanged, TechnologyRemoved and
+  // TechnologyAdded signals.
   g_dbus_connection_signal_unsubscribe(connman_.connection(),
                                        services_changed_id_);
   g_dbus_connection_signal_unsubscribe(connman_.connection(),
index 143087d..f6e29d5 100644 (file)
@@ -44,10 +44,8 @@ namespace
 // ----------------------------------------------------------------------
 
 ivi::settings::connman_service::connman_service(
-  GDBusConnection * connection,
-  event_callback const & e)
+  GDBusConnection * connection)
   : connection_(connection)
-  , event_callback_(e)
 {
 }
 
@@ -90,7 +88,7 @@ ivi::settings::connman_service::handle_request(
       json_reader_end_element(reader);
 
       if (path != nullptr) {
-        service s(path, connection_, event_callback_);
+        service s(path, connection_);
         s.handle_request(name, reader, response);
       }
     }
index 7cd2264..d15ff0b 100644 (file)
@@ -30,7 +30,6 @@
 #include "connman.hpp"
 
 #include <settingsd/plugin.hpp>
-#include <settingsd/event_callback.hpp>
 
 #include <gio/gio.h>
 
@@ -56,8 +55,7 @@ namespace ivi
     public:
 
       /// Constructor.
-      connman_service(GDBusConnection * connection,
-                       event_callback const & e);
+      connman_service(GDBusConnection * connection);
 
       /// Destructor.
       ~connman_service();
@@ -81,9 +79,6 @@ namespace ivi
       /// The underlying D-Bus connection.
       GDBusConnection * const connection_;
 
-      /// Callback through which events will be sent to clients.
-      event_callback event_callback_;
-
     };
 
   }
index b44d59e..89033a9 100644 (file)
@@ -45,14 +45,11 @@ namespace
 
 ivi::settings::connman_technology::connman_technology(
   GDBusConnection * connection,
-  connman_manager & manager,
-  event_callback const & e)
+  connman_manager & manager)
   : connman_("net.connman.Technology",     // Interface
              "/",                       // Object path
-             connection,
-             e)
+             connection)
   , manager_(manager)
-  , event_callback_(e)
 {
 }
 
@@ -95,10 +92,7 @@ ivi::settings::connman_technology::handle_request(
       json_reader_end_element(reader);
 
       if (path != nullptr) {
-        technology t(path,
-                     connman_.connection(),
-                     manager_,
-                     event_callback_);
+        technology t(path, connman_.connection(), manager_);
         t.handle_request(name, reader, response);
       }
     }
index ad8b78c..09e30f9 100644 (file)
@@ -30,7 +30,6 @@
 #include "connman.hpp"
 
 #include <settingsd/plugin.hpp>
-#include <settingsd/event_callback.hpp>
 
 #include <gio/gio.h>
 
@@ -57,8 +56,7 @@ namespace ivi
 
       /// Constructor.
       connman_technology(GDBusConnection * connection,
-                         connman_manager & manager,
-                         event_callback const & e);
+                         connman_manager & manager);
 
       /// Destructor.
       ~connman_technology();
@@ -85,9 +83,6 @@ namespace ivi
       /// The proxy used to access the connman Manager D-Bus API.
       connman_manager & manager_;
 
-      /// Callback through which events will be sent to clients.
-      event_callback event_callback_;
-
     };
 
   }
index 51f4aaa..a414abc 100644 (file)
@@ -59,10 +59,10 @@ register_settings(ivi::settings::registrar & r,
   std::unique_ptr<ivi::settings::plugin> manager(mgr);
 
   std::unique_ptr<ivi::settings::plugin> service(
-    new ivi::settings::connman_service(connection, e));
+    new ivi::settings::connman_service(connection));
 
   std::unique_ptr<ivi::settings::plugin> technology(
-    new ivi::settings::connman_technology(connection, *mgr, e));
+    new ivi::settings::connman_technology(connection, *mgr));
 
   std::unique_ptr<ivi::settings::plugin> clk(
     new ivi::settings::clock(connection, e));
index 8d25157..7e33242 100644 (file)
 
 
 ivi::settings::service::service(std::string service_path,
-                                GDBusConnection * connection,
-                                event_callback const & e)
+                                GDBusConnection * connection)
   : connman_("net.connman.Service",     // Interface
              service_path.c_str(),      // Object path
-             connection,
-             e)
+             connection)
 {
 }
 
index 56c9b62..6158afb 100644 (file)
@@ -59,8 +59,7 @@ namespace ivi
        *                         sent to clients.
        */
       service(std::string service_path,
-              GDBusConnection * connection,
-              event_callback const & e);
+              GDBusConnection * connection);
 
       /**
        * Handle connman Service object request.
index 15c0f1f..e8e3d14 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "technology.hpp"
 #include "connman_manager.hpp"
-#include "service.hpp"
 
 #include <settingsd/response_callback.hpp>
 #include <settingsd/glib_traits.hpp>
 
 ivi::settings::technology::technology(char const * path,
                                       GDBusConnection * connection,
-                                      connman_manager & manager,
-                                      event_callback const & e)
+                                      connman_manager & manager)
   : connman_("net.connman.Technology",     // Interface
              path,                         // Object path
-             connection,
-             e)
+             connection)
   , manager_(manager)
-  , event_callback_(e)
 {
 }
 
index 8ebb50b..5008eb5 100644 (file)
@@ -59,13 +59,10 @@ namespace ivi
        * @param[in] path       The connman technology object path.
        * @param[in] connection Underlying D-Bus connection.
        * @param[in] manager    Connman manager proxy.
-       * @param[in] e          Callback through which events will be
-       *                       sent to clients.
        */
       technology(char const * path,
                  GDBusConnection * connection,
-                 connman_manager & manager,
-                 event_callback const & e);
+                 connman_manager & manager);
 
       /**
        * Handle connman technology-specific request.
@@ -121,9 +118,6 @@ namespace ivi
       /// The proxy used to access the connman Manager D-Bus API.
       connman_manager & manager_;
 
-      /// Callback through which events will be sent to clients.
-      event_callback event_callback_;
-
     };
 
   }