diff options
Diffstat (limited to 'src/Daemon/DBusServerProxy.h')
| -rw-r--r-- | src/Daemon/DBusServerProxy.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/Daemon/DBusServerProxy.h b/src/Daemon/DBusServerProxy.h new file mode 100644 index 0000000..5b8f688 --- /dev/null +++ b/src/Daemon/DBusServerProxy.h @@ -0,0 +1,131 @@ +/* + 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); + register_method(CDBusServer_adaptor, GetCrashInfosMap, _GetCrashInfosMap_stub); + } +/* reveal Interface introspection when we stabilize the API */ +/* + DBus::IntrospectedInterface *const introspect() const + { + static DBus::IntrospectedArgument GetCrashInfos_args[] = + { + //{ "uid", "i", true}, + { "info", "a{ss}", false }, + { 0, 0, 0 } + }; + static DBus::IntrospectedArgument Crash_args[] = + { + { "package", "s", false }, + { 0, 0, 0 } + }; + static DBus::IntrospectedMethod CDBusServer_adaptor_methods[] = + { + { "GetCrashInfos", GetCrashInfos_args }, + { 0, 0 }, + { "GetCrashInfosMap", GetCrashInfos_args }, + { 0, 0 } + }; + static DBus::IntrospectedMethod CDBusServer_adaptor_signals[] = + { + { "Crash", 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; + virtual dbus_vector_map_crash_infos_t GetCrashInfosMap(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; + } + + DBus::Message _GetCrashInfosMap_stub(const DBus::CallMessage &call) + { + DBus::MessageIter ri = call.reader(); + + std::string argin1; ri >> argin1; + dbus_vector_map_crash_infos_t argout1 = GetCrashInfosMap(call.sender()); + DBus::ReturnMessage reply(call); + DBus::MessageIter wi = reply.writer(); + wi << argout1; + return reply; + } +}; + |
