summaryrefslogtreecommitdiff
path: root/UnityCore
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2015-09-25 17:20:57 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2015-09-25 17:20:57 +0200
commit55ef232a8989da14de7a524bb9a00956275bb24c (patch)
treec47239c93d74bc0976d6a32287e03d5ea954b7c7 /UnityCore
parent5875096aeb447fd72006c89673fb05e2de3947ea (diff)
glib::Object: add SetMethodsCallsHandlerFull to get all call parameters
(bzr r4008.7.1)
Diffstat (limited to 'UnityCore')
-rw-r--r--UnityCore/GLibDBusServer.cpp13
-rw-r--r--UnityCore/GLibDBusServer.h8
2 files changed, 15 insertions, 6 deletions
diff --git a/UnityCore/GLibDBusServer.cpp b/UnityCore/GLibDBusServer.cpp
index 6d01f5994..00f956503 100644
--- a/UnityCore/GLibDBusServer.cpp
+++ b/UnityCore/GLibDBusServer.cpp
@@ -87,7 +87,7 @@ struct DBusObject::Impl
if (self->method_cb_)
{
- ret = self->method_cb_(method_name ? method_name : "", parameters);
+ ret = self->method_cb_(gchar_to_string(method_name), parameters, gchar_to_string(sender), gchar_to_string(object_path));
LOG_INFO(logger_o) << "Called method: '" << method_name << " " << parameters
<< "' on object '" << object_path << "' with interface '"
@@ -401,7 +401,7 @@ struct DBusObject::Impl
}
DBusObject* object_;
- MethodCallback method_cb_;
+ MethodCallbackFull method_cb_;
PropertyGetterCallback property_get_cb_;
PropertySetterCallback property_set_cb_;
@@ -420,7 +420,14 @@ DBusObject::~DBusObject()
void DBusObject::SetMethodsCallsHandler(MethodCallback const& func)
{
- impl_->method_cb_ = func;
+ impl_->method_cb_ = nullptr;
+
+ if (func)
+ {
+ impl_->method_cb_ = [func] (std::string const& method, GVariant* parameters, std::string const&, std::string const&) {
+ return func(method, parameters);
+ };
+ }
}
void DBusObject::SetPropertyGetter(PropertyGetterCallback const& func)
diff --git a/UnityCore/GLibDBusServer.h b/UnityCore/GLibDBusServer.h
index 8957861be..e4778c09e 100644
--- a/UnityCore/GLibDBusServer.h
+++ b/UnityCore/GLibDBusServer.h
@@ -40,11 +40,13 @@ public:
DBusObject(std::string const& introspection_xml, std::string const& interface_name);
virtual ~DBusObject();
- typedef std::function<GVariant*(std::string const&, GVariant*)> MethodCallback;
- typedef std::function<GVariant*(std::string const&)> PropertyGetterCallback;
- typedef std::function<bool(std::string const&, GVariant*)> PropertySetterCallback;
+ typedef std::function<GVariant*(std::string const& /*method*/, GVariant* /*parameters*/)> MethodCallback;
+ typedef std::function<GVariant*(std::string const& /*method*/, GVariant* /*parameters*/, std::string const& /*sender*/, std::string const& /*object_path*/)> MethodCallbackFull;
+ typedef std::function<GVariant*(std::string const& /*name*/)> PropertyGetterCallback;
+ typedef std::function<bool(std::string const& /*name*/, GVariant* /*value*/)> PropertySetterCallback;
void SetMethodsCallsHandler(MethodCallback const&);
+ void SetMethodsCallsHandlerFull(MethodCallbackFull const&);
void SetPropertyGetter(PropertyGetterCallback const&);
void SetPropertySetter(PropertySetterCallback const&);