Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Unified Diff: chromeos/dbus/dbus.h

Issue 3111008: consts for imageburning (Closed) Base URL: http://src.chromium.org/git/common.git
Patch Set: a Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chromeos/dbus/service_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/dbus/dbus.h
diff --git a/chromeos/dbus/dbus.h b/chromeos/dbus/dbus.h
index 9ac1a1f5088f353259e4fa5e1c1a95521de6d91d..2bc44b9d0ce6a0bd3173954fa8f81188e433d56f 100644
--- a/chromeos/dbus/dbus.h
+++ b/chromeos/dbus/dbus.h
@@ -247,6 +247,32 @@ class MonitorConnection<void (A1, A2)> {
};
+template <typename A1, typename A2, typename A3>
+class MonitorConnection<void (A1, A2, A3)> {
+ public:
+ MonitorConnection(const Proxy& proxy, const char* name,
+ void (*monitor)(void*, A1, A2, A3), void* object)
+ : proxy_(proxy), name_(name), monitor_(monitor), object_(object) {
+ }
+
+ static void Run(::DBusGProxy*, A1 x, A2 y, A3 z, MonitorConnection* self) {
+ self->monitor_(self->object_, x, y, z);
+ }
+ const Proxy& proxy() const {
+ return proxy_;
+ }
+ const std::string& name() const {
+ return name_;
+ }
+
+ private:
+ Proxy proxy_;
+ std::string name_;
+ void (*monitor_)(void*, A1, A2, A3);
+ void* object_;
+
+};
+
template <typename A1>
MonitorConnection<void (A1)>* Monitor(const Proxy& proxy, const char* name,
void (*monitor)(void*, A1),
@@ -281,6 +307,26 @@ MonitorConnection<void (A1, A2)>* Monitor(const Proxy& proxy, const char* name,
return result;
}
+template <typename A1, typename A2, typename A3>
+MonitorConnection<void (A1, A2, A3)>* Monitor(const Proxy& proxy,
+ const char* name,
+ void (*monitor)(void*, A1, A2, A3),
+ void* object) {
+ typedef MonitorConnection<void (A1, A2, A3)> ConnectionType;
+
+ ConnectionType* result = new ConnectionType(proxy, name, monitor, object);
+
+ ::dbus_g_proxy_add_signal(proxy.gproxy(), name,
+ glib::type_to_gtypeid<A1>(),
+ glib::type_to_gtypeid<A2>(),
+ glib::type_to_gtypeid<A3>(),
+ G_TYPE_INVALID);
+ ::dbus_g_proxy_connect_signal(proxy.gproxy(), name,
+ G_CALLBACK(&ConnectionType::Run),
+ result, NULL);
+ return result;
+}
+
template <typename F>
void Disconnect(MonitorConnection<F>* connection) {
typedef MonitorConnection<F> ConnectionType;
« no previous file with comments | « no previous file | chromeos/dbus/service_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698