summaryrefslogtreecommitdiffstats
path: root/src/Daemon
diff options
context:
space:
mode:
authorJiri Moskovcak <jmoskovc@redhat.com>2010-03-11 16:27:14 +0100
committerJiri Moskovcak <jmoskovc@redhat.com>2010-03-11 16:27:14 +0100
commitd3fff839380fa1e165b92d3dc79fb7eafaf2a976 (patch)
treeb004421f370a18e9d5079ac779b1123a3c1a184e /src/Daemon
parentcf9b053459d4931210800b1ce397e1403c06f346 (diff)
downloadabrt-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.h2
-rw-r--r--src/Daemon/CommLayerServerDBus.cpp10
-rw-r--r--src/Daemon/CommLayerServerDBus.h4
-rw-r--r--src/Daemon/Daemon.cpp12
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
}