Merge branch 'connman-agent' of ssh://tzo/profile/ivi/settings-daemon into connman...
authorOssama Othman <ossama.othman@intel.com>
Tue, 3 Dec 2013 23:34:27 +0000 (15:34 -0800)
committerOssama Othman <ossama.othman@intel.com>
Tue, 3 Dec 2013 23:34:27 +0000 (15:34 -0800)
Conflicts:
configure.ac
include/settingsd/glib_traits.hpp
include/settingsd/send_callback.hpp
include/settingsd/unique_ptr.hpp
plugins/connman/Makefile.am
plugins/connman/bluetooth.hpp
plugins/connman/connman_manager.cpp
plugins/connman/connman_manager.hpp
plugins/connman/connman_service.hpp
plugins/connman/connman_technology.hpp
plugins/connman/dbus_connection.hpp
plugins/connman/registration.cpp
plugins/connman/service.cpp
plugins/connman/service.hpp
plugins/connman/technology.cpp
plugins/connman/technology.hpp
src/daemon.cpp

Change-Id: I83b01a639b215a93cf064f4b2cef2929814f8855

1  2 
plugins/connman/connman_manager.cpp
plugins/connman/connman_service.hpp

@@@ -322,91 -158,36 +322,80 @@@ ivi::settings::connman_manager::get_pro
    return nullptr;
  }
  
 -GVariant *
 -ivi::settings::connman_manager::get_services(GError *& error) const
 +void
 +ivi::settings::connman_manager::get_services(
 +  response_callback & response) const
  {
 -  return call_method("GetServices",
 -                     nullptr,  // No parameters,
 -                     error);
 +  call_method("GetServices", response);
  }
  
 -GVariant *
 -ivi::settings::connman_manager::call_method(char const * name,
 -                                            GVariant * parameters,
 -                                            GError *& error) const
 +void
 +ivi::settings::connman_manager::get_technologies(
 +  response_callback & response) const
 +{
 +  call_method("GetTechnologies", response);
 +}
 +
 +void
 +ivi::settings::connman_manager::call_method(
 +  char const * name,
 +  response_callback & response) const
  {
-   return call_method("GetServices",
-                      nullptr,  // No parameters,
-                      error);
- }
- GVariant *
- ivi::settings::connman_manager::call_method(char const * name,
-                                             GVariant * parameters,
-                                             GError *& error) const
- {
    constexpr gint const timeout = 5000;  // milliseconds
 +  GError * error = nullptr;
  
 -  GVariant * const ret =
 +  unique_ptr<GVariant> ret(
      g_dbus_proxy_call_sync(connman_.proxy(),
 -                           name,     // "GetTechnologies", ...
 -                           parameters,
 +                           name,
 +                           nullptr,  // No parameters
                             G_DBUS_CALL_FLAGS_NONE,
                             timeout,
                             nullptr,  // Not cancellable
 -                           &error);
 +                           &error));
 +
 +  unique_ptr<GError> safe_error(error);
 +
 +  if (ret != nullptr) {
 +    response.send_response(
 +      [&ret](JsonBuilder * builder)
 +      {
 +        /**
 +         * @todo Can @c json_gvariant_serialize() ever return a nullptr?
 +         */
 +        JsonNode * const value =
 +          json_gvariant_serialize(ret.get());
 +
 +        json_builder_set_member_name(builder, "value");
 +        json_builder_add_value(builder, value);
  
 -  if (ret == nullptr)
 -    g_critical("THE ERROR: %s\n", error->message);
 +        // No need to free the JsonNode.  The builder will take
 +        // ownership of it.
 +      });
 +  } else if (error != nullptr) {
 +    response.send_error(std::string(name) + " failed: " + error->message);
 +  }
 +}
  
 -  return ret;
 +guint
 +ivi::settings::connman_manager::subscribe_to_signal(
 +  GDBusConnection * connection,
 +  char const* name,
 +  ivi_signal_callback callback,
 +  void * user_data)
 +{
 +  return
 +    g_dbus_connection_signal_subscribe(connection,
 +                                       nullptr,
 +                                       connman_.interface_name(),
 +                                       name,
 +                                       connman_.object_path(),
 +                                       nullptr,
 +                                       G_DBUS_SIGNAL_FLAGS_NONE,
 +                                       callback,
 +                                       user_data,
 +                                       nullptr);
  }
  
  // Local Variables:
  // mode:c++
  // c-basic-offset:2
@@@ -56,11 -57,12 +56,11 @@@ namespace iv
      public:
  
        /// Constructor.
 -      wifi(GDBusConnection * connection,
 -           connman_manager & manager,
 -           event_callback const & e);
 +      connman_service(GDBusConnection * connection,
-                       event_callback const & e);
++                       event_callback const & e);
  
        /// Destructor.
 -      virtual ~wifi();
 +      ~connman_service();
  
        /**
         * @name Settings Plugin API