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; |
