summaryrefslogtreecommitdiff
path: root/UnityCore
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2015-09-25 17:37:00 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2015-09-25 17:37:00 +0200
commit2275a8e75daf4a4f815c282111c507d7a415786e (patch)
treef868f226df86d1dc771eed3c44db53d57a133298 /UnityCore
parent55ef232a8989da14de7a524bb9a00956275bb24c (diff)
GLibDBusServer: allow to emit a signal to a single listener
(bzr r4008.7.2)
Diffstat (limited to 'UnityCore')
-rw-r--r--UnityCore/GLibDBusServer.cpp27
-rw-r--r--UnityCore/GLibDBusServer.h4
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;