diff options
author | Jiri Moskovcak <jmoskovc@redhat.com> | 2010-03-11 16:27:14 +0100 |
---|---|---|
committer | Jiri Moskovcak <jmoskovc@redhat.com> | 2010-03-11 16:27:14 +0100 |
commit | d3fff839380fa1e165b92d3dc79fb7eafaf2a976 (patch) | |
tree | b004421f370a18e9d5079ac779b1123a3c1a184e /src/Daemon | |
parent | cf9b053459d4931210800b1ce397e1403c06f346 (diff) | |
download | abrt-d3fff839380fa1e165b92d3dc79fb7eafaf2a976.tar.gz abrt-d3fff839380fa1e165b92d3dc79fb7eafaf2a976.tar.xz abrt-d3fff839380fa1e165b92d3dc79fb7eafaf2a976.zip |
GUI: added action to applet to directly report last crash
Revieved by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src/Daemon')
-rw-r--r-- | src/Daemon/CommLayerServer.h | 2 | ||||
-rw-r--r-- | src/Daemon/CommLayerServerDBus.cpp | 10 | ||||
-rw-r--r-- | src/Daemon/CommLayerServerDBus.h | 4 | ||||
-rw-r--r-- | src/Daemon/Daemon.cpp | 12 |
4 files changed, 20 insertions, 8 deletions
diff --git a/src/Daemon/CommLayerServer.h b/src/Daemon/CommLayerServer.h index 2daaf93a..9e095c39 100644 --- a/src/Daemon/CommLayerServer.h +++ b/src/Daemon/CommLayerServer.h @@ -30,7 +30,7 @@ class CCommLayerServer { virtual ~CCommLayerServer(); /* just stubs to be called when not implemented in specific comm layer */ - virtual void Crash(const char *package_name, const char *uid_str) {} + virtual void Crash(const char *package_name, const char* crash_id, const char *uid_str) {} virtual void JobDone(const char* peer) = 0; virtual void QuotaExceed(const char* str) {} diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp index 517a9e2a..103f8675 100644 --- a/src/Daemon/CommLayerServerDBus.cpp +++ b/src/Daemon/CommLayerServerDBus.cpp @@ -64,23 +64,27 @@ static void send_flush_and_unref(DBusMessage* msg) } /* Notify the clients (UI) about a new crash */ -void CCommLayerServerDBus::Crash(const char *package_name, const char *uid_str) +void CCommLayerServerDBus::Crash(const char *package_name, + const char* crash_id, + const char *uid_str) { DBusMessage* msg = new_signal_msg("Crash"); if (uid_str) { dbus_message_append_args(msg, DBUS_TYPE_STRING, &package_name, + DBUS_TYPE_STRING, &crash_id, DBUS_TYPE_STRING, &uid_str, DBUS_TYPE_INVALID); - VERB2 log("Sending signal Crash('%s','%s')", package_name, uid_str); + VERB2 log("Sending signal Crash('%s','%s','%s')", package_name, crash_id, uid_str); } else { dbus_message_append_args(msg, DBUS_TYPE_STRING, &package_name, + DBUS_TYPE_STRING, &crash_id, DBUS_TYPE_INVALID); - VERB2 log("Sending signal Crash('%s')", package_name); + VERB2 log("Sending signal Crash('%s','%s')", package_name, crash_id); } send_flush_and_unref(msg); } diff --git a/src/Daemon/CommLayerServerDBus.h b/src/Daemon/CommLayerServerDBus.h index c62d9a9f..7ccad083 100644 --- a/src/Daemon/CommLayerServerDBus.h +++ b/src/Daemon/CommLayerServerDBus.h @@ -29,7 +29,9 @@ class CCommLayerServerDBus virtual ~CCommLayerServerDBus(); /* DBus signal senders */ - virtual void Crash(const char *package_name, const char *uid_str); + virtual void Crash(const char *package_name, + const char *crash_id, + const char *uid_str); virtual void JobDone(const char* peer); virtual void QuotaExceed(const char* str); diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp index 46bd9502..66f1d6e9 100644 --- a/src/Daemon/Daemon.cpp +++ b/src/Daemon/Daemon.cpp @@ -75,7 +75,7 @@ using namespace std; * - SetSettings(map_abrt_settings_t): returns void * * DBus signals we emit: - * - Crash(progname,uid) - a new crash occurred (new /var/cache/abrt/DIR is found) + * - Crash(progname, crash_id, uid) - a new crash occurred (new /var/cache/abrt/DIR is found) * - JobDone(client_dbus_ID) - see StartJob above. * Sent as unicast to the client which did StartJob. * - Warning(msg) @@ -542,11 +542,17 @@ static gboolean handle_inotify_cb(GIOChannel *gio, GIOCondition condition, gpoin } } } - /* Send dbus signal */ if (analyzer_has_InformAllUsers(analyzer)) uid_str = NULL; - g_pCommLayer->Crash(get_crash_data_item_content(crashinfo, FILENAME_PACKAGE).c_str(), uid_str); + char *crash_id = xasprintf("%s:%s", + get_crash_data_item_content(crashinfo, CD_UID).c_str(), + get_crash_data_item_content(crashinfo, CD_UUID).c_str() + ); + g_pCommLayer->Crash(get_crash_data_item_content(crashinfo, FILENAME_PACKAGE).c_str(), + crash_id, + uid_str); + free(crash_id); break; #undef fullname } |