diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2015-09-25 17:37:00 +0200 | 
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2015-09-25 17:37:00 +0200 | 
| commit | 2275a8e75daf4a4f815c282111c507d7a415786e (patch) | |
| tree | f868f226df86d1dc771eed3c44db53d57a133298 /UnityCore | |
| parent | 55ef232a8989da14de7a524bb9a00956275bb24c (diff) | |
GLibDBusServer: allow to emit a signal to a single listener
(bzr r4008.7.2)
Diffstat (limited to 'UnityCore')
| -rw-r--r-- | UnityCore/GLibDBusServer.cpp | 27 | ||||
| -rw-r--r-- | UnityCore/GLibDBusServer.h | 4 | 
2 files changed, 15 insertions, 16 deletions
| diff --git a/UnityCore/GLibDBusServer.cpp b/UnityCore/GLibDBusServer.cpp index 00f956503..baedf2e65 100644 --- a/UnityCore/GLibDBusServer.cpp +++ b/UnityCore/GLibDBusServer.cpp @@ -295,13 +295,14 @@ struct DBusObject::Impl  void EmitGenericSignal(glib::Object<GDBusConnection> const& conn, std::string const& path,  std::string const& interface, std::string const& signal, - GVariant* parameters = nullptr) + GVariant* parameters = nullptr, std::string const& dest = "")  {  LOG_INFO(logger_o) << "Emitting signal '" << signal << "'" << " for the interface "  << "'" << interface << "' on object path '" << path << "'";  glib::Error error; - g_dbus_connection_emit_signal(conn, nullptr, path.c_str(), interface.c_str(), + g_dbus_connection_emit_signal(conn, dest.empty() ? nullptr : dest.c_str(), + path.c_str(), interface.c_str(),  signal.c_str(), parameters, &error);  if (error) @@ -312,7 +313,7 @@ struct DBusObject::Impl  }  } - void EmitSignal(std::string const& signal, GVariant* parameters, std::string const& path) + void EmitSignal(std::string const& signal, GVariant* parameters, std::string const& dest, std::string const& path)  {  glib::Variant reffed_params(parameters); @@ -333,7 +334,7 @@ struct DBusObject::Impl  return;  } - EmitGenericSignal(conn_it->second, path, InterfaceName(), signal, parameters); + EmitGenericSignal(conn_it->second, path, InterfaceName(), signal, parameters, dest);  }  else  { @@ -343,7 +344,7 @@ struct DBusObject::Impl  auto const& obj_path = pair.first;  auto const& conn = pair.second; - EmitGenericSignal(conn, obj_path, InterfaceName(), signal, params); + EmitGenericSignal(conn, obj_path, InterfaceName(), signal, params, dest);  }  }  } @@ -455,9 +456,9 @@ void DBusObject::UnRegister(std::string const& path)  impl_->UnRegister(path);  } -void DBusObject::EmitSignal(std::string const& signal, GVariant* parameters, std::string const& path) +void DBusObject::EmitSignal(std::string const& signal, GVariant* parameters, std::string const& dest, std::string const& path)  { - impl_->EmitSignal(signal, parameters, path); + impl_->EmitSignal(signal, parameters, dest, path);  }  void DBusObject::EmitPropertyChanged(std::string const& property, std::string const& path) @@ -655,12 +656,10 @@ struct DBusServer::Impl  return DBusObject::Ptr();  } - void EmitSignal(std::string const& interface, std::string const& signal, GVariant* parameters) + void EmitSignal(std::string const& interface, std::string const& signal, GVariant* parameters, std::string const& dest)  { - auto const& obj = GetObject(interface); - - if (obj) - obj->EmitSignal(signal, parameters); + if (DBusObject::Ptr const& obj = GetObject(interface)) + obj->EmitSignal(signal, parameters, dest);  }  DBusServer* server_; @@ -742,9 +741,9 @@ DBusObject::Ptr DBusServer::GetObject(std::string const& interface) const  return impl_->GetObject(interface);  } -void DBusServer::EmitSignal(std::string const& interface, std::string const& signal, GVariant* parameters) +void DBusServer::EmitSignal(std::string const& interface, std::string const& signal, GVariant* parameters, std::string const& dest)  { - impl_->EmitSignal(interface, signal, parameters); + impl_->EmitSignal(interface, signal, parameters, dest);  }  } // namespace glib diff --git a/UnityCore/GLibDBusServer.h b/UnityCore/GLibDBusServer.h index e4778c09e..b064c4360 100644 --- a/UnityCore/GLibDBusServer.h +++ b/UnityCore/GLibDBusServer.h @@ -55,7 +55,7 @@ public:  bool Register(glib::Object<GDBusConnection> const&, std::string const& path);  void UnRegister(std::string const& path = ""); - void EmitSignal(std::string const& signal, GVariant* parameters = nullptr, std::string const& path = ""); + void EmitSignal(std::string const& signal, GVariant* parameters = nullptr, std::string const& dest = "", std::string const& path = "");  void EmitPropertyChanged(std::string const& property, std::string const& path = "");  sigc::signal<void, std::string const&> registered; @@ -93,7 +93,7 @@ public:  std::list<DBusObject::Ptr> GetObjects() const;  DBusObject::Ptr GetObject(std::string const& interface) const; - void EmitSignal(std::string const& interface, std::string const& signal, GVariant* parameters = nullptr); + void EmitSignal(std::string const& interface, std::string const& signal, GVariant* parameters = nullptr, std::string const& dest = "");  bool IsConnected() const;  std::string const& Name() const; | 
