summaryrefslogtreecommitdiffstats
path: root/lib/DBus/DBusServerProxy.h
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2009-02-12 16:02:29 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2009-02-12 16:02:29 +0100
commit164c692385ddf3b17fbc9417b748f198ff19b096 (patch)
treeeca3c81d10577f37386209b66e1a4f3c55f31844 /lib/DBus/DBusServerProxy.h
parent53821dddf0b6ee66dc5f0684b17c541c157656ec (diff)
downloadabrt-164c692385ddf3b17fbc9417b748f198ff19b096.tar.gz
abrt-164c692385ddf3b17fbc9417b748f198ff19b096.tar.xz
abrt-164c692385ddf3b17fbc9417b748f198ff19b096.zip
Rewritten dbus to dbus-c++
Added possibility to call daemon methods via dbus
Diffstat (limited to 'lib/DBus/DBusServerProxy.h')
-rw-r--r--lib/DBus/DBusServerProxy.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/lib/DBus/DBusServerProxy.h b/lib/DBus/DBusServerProxy.h
new file mode 100644
index 00000000..a32bbc3d
--- /dev/null
+++ b/lib/DBus/DBusServerProxy.h
@@ -0,0 +1,114 @@
+/*
+ Copyright (C) 2009 Jiri Moskovcak (jmoskovc@redhat.com)
+ Copyright (C) 2009 RedHat inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include <dbus-c++/dbus.h>
+#include <dbus-c++/glib-integration.h>
+#include "DBusCommon.h"
+
+class CDBusServer_adaptor
+: public DBus::InterfaceAdaptor
+{
+public:
+
+ CDBusServer_adaptor()
+ : DBus::InterfaceAdaptor(CC_DBUS_IFACE)
+ {
+ register_method(CDBusServer_adaptor, GetCrashInfos, _GetCrashInfos_stub);
+ }
+
+ DBus::IntrospectedInterface *const introspect() const
+ {
+ static DBus::IntrospectedArgument GetCrashInfos_args[] =
+ {
+ { "uid", "i", true},
+ { "info", "aas", false },
+ { 0, 0, 0 }
+ };
+ static DBus::IntrospectedArgument Crash_args[] =
+ {
+ { "value", "v", false },
+ { 0, 0, 0 }
+ };
+ static DBus::IntrospectedMethod CDBusServer_adaptor_methods[] =
+ {
+ { "GetDumps", GetCrashInfos_args },
+ { 0, 0 }
+ };
+ static DBus::IntrospectedMethod CDBusServer_adaptor_signals[] =
+ {
+ { "Echoed", Crash_args },
+ { 0, 0 }
+ };
+ static DBus::IntrospectedProperty CDBusServer_adaptor_properties[] =
+ {
+ { 0, 0, 0, 0 }
+ };
+ static DBus::IntrospectedInterface CDBusServer_adaptor_interface =
+ {
+ "com.redhat.CrashCatcher",
+ CDBusServer_adaptor_methods,
+ CDBusServer_adaptor_signals,
+ CDBusServer_adaptor_properties
+ };
+ return &CDBusServer_adaptor_interface;
+ }
+
+public:
+
+ /* properties exposed by this interface, use
+ * property() and property(value) to get and set a particular property
+ */
+
+public:
+
+ /* methods exported by this interface,
+ * you will have to implement them in your ObjectAdaptor
+ */
+ virtual dbus_vector_crash_infos_t GetCrashInfos(const std::string &pUID) = 0;
+
+public:
+
+ /* signal emitters for this interface
+ */
+ void Crash(const std::string& arg1)
+ {
+ ::DBus::SignalMessage sig("Crash");
+ ::DBus::MessageIter wi = sig.writer();
+ wi << arg1;
+ emit_signal(sig);
+ }
+
+
+private:
+
+ /* unmarshalers (to unpack the DBus message before calling the actual interface method)
+ */
+ DBus::Message _GetCrashInfos_stub(const DBus::CallMessage &call)
+ {
+ DBus::MessageIter ri = call.reader();
+
+ std::string argin1; ri >> argin1;
+ dbus_vector_crash_infos_t argout1 = GetCrashInfos(argin1);
+ DBus::ReturnMessage reply(call);
+ DBus::MessageIter wi = reply.writer();
+ wi << argout1;
+ return reply;
+ }
+};
+