summaryrefslogtreecommitdiff
path: root/src/dbus/server/session-common.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/dbus/server/session-common.h')
-rw-r--r--src/dbus/server/session-common.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/dbus/server/session-common.h b/src/dbus/server/session-common.h
index ce8bb1c4..83fe246c 100644
--- a/src/dbus/server/session-common.h
+++ b/src/dbus/server/session-common.h
@@ -195,6 +195,83 @@ namespace GDBusCXX {
base::append(builder, array);
}
};
+
+ template <> struct dbus_traits<SyncReport> :
+ public dbus_traits< std::string >
+ {
+ typedef dbus_traits< std::string > base;
+
+ typedef SyncReport host_type;
+ typedef const SyncReport &arg_type;
+
+#ifdef GDBUS_CXX_GIO
+ static void get(GDBusCXX::ExtractArgs &context,
+ GDBusCXX::reader_type &iter, host_type &report)
+ {
+ std::string dump;
+ base::get(context, iter, dump);
+ report = SyncReport(dump);
+ }
+#else
+ static void get(GDBusCXX::connection_type *conn, GDBusCXX::message_type *msg,
+ GDBusCXX::reader_type &iter, host_type &report)
+ {
+ std::string dump;
+ base::get(conn, msg, iter, dump);
+ report = SyncReport(dump);
+ }
+#endif
+
+ static void append(GDBusCXX::builder_type &builder, arg_type report)
+ {
+ base::append(builder, report.toString());
+ }
+ };
+
+ template <> struct dbus_traits<SyncSourceReport> :
+ public dbus_traits< std::string >
+ {
+ typedef dbus_traits< std::string > base;
+
+ typedef SyncSourceReport host_type;
+ typedef const SyncSourceReport &arg_type;
+
+#ifdef GDBUS_CXX_GIO
+ static void get(GDBusCXX::ExtractArgs &context,
+ GDBusCXX::reader_type &iter, host_type &source)
+ {
+ std::string dump;
+ base::get(context, iter, dump);
+ SyncReport report = SyncReport(dump);
+ const SyncSourceReport *foo = report.findSyncSourceReport("foo");
+ if (!foo) {
+ SE_THROW("incomplete SyncReport");
+ }
+ source = *foo;
+ }
+#else
+ static void get(GDBusCXX::connection_type *conn, GDBusCXX::message_type *msg,
+ GDBusCXX::reader_type &iter, host_type &source)
+ {
+ std::string dump;
+ base::get(conn, msg, iter, dump);
+ SyncReport report = SyncReport(dump);
+ const SyncSourceReport *foo = report.findSyncSourceReport("foo");
+ if (!foo) {
+ SE_THROW("incomplete SyncReport");
+ }
+ source = *foo;
+ }
+#endif
+
+ static void append(GDBusCXX::builder_type &builder, arg_type source)
+ {
+ SyncReport report;
+ report.addSyncSourceReport("foo", source);
+ base::append(builder, report.toString());
+ }
+ };
+
}
#endif // SESSION_COMMON_H