summaryrefslogtreecommitdiffstats
path: root/src/Daemon/CommLayerServerDBus.cpp
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2009-09-08 17:05:57 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2009-09-08 17:05:57 +0200
commitff2627e7c597e50025ca4d91ff8168eec80f9054 (patch)
treeab3d97087d70ee23c5af0d6d52cbb97660c6e3e6 /src/Daemon/CommLayerServerDBus.cpp
parent8198cd06195f4217fd6b1afb675f3a316c951a1e (diff)
downloadabrt-ff2627e7c597e50025ca4d91ff8168eec80f9054.tar.gz
abrt-ff2627e7c597e50025ca4d91ff8168eec80f9054.tar.xz
abrt-ff2627e7c597e50025ca4d91ff8168eec80f9054.zip
make Warning, Error and Update send unicast dbus messages
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src/Daemon/CommLayerServerDBus.cpp')
-rw-r--r--src/Daemon/CommLayerServerDBus.cpp58
1 files changed, 24 insertions, 34 deletions
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp
index d426338..c6908f5 100644
--- a/src/Daemon/CommLayerServerDBus.cpp
+++ b/src/Daemon/CommLayerServerDBus.cpp
@@ -336,12 +336,15 @@ static inline int load_val(DBusMessageIter* iter, std::map<K,V>& val) { return
*/
/* helpers */
-static DBusMessage* new_signal_msg(const char* member)
+static DBusMessage* new_signal_msg(const char* member, const char* peer = NULL)
{
/* path, interface, member name */
DBusMessage* msg = dbus_message_new_signal(CC_DBUS_PATH, CC_DBUS_IFACE, member);
if (!msg)
die_out_of_memory();
+ /* Send unicast dbus signal if peer is known */
+ if (peer && !dbus_message_set_destination(msg, peer))
+ die_out_of_memory();
return msg;
}
static void send_flush_and_unref(DBusMessage* msg)
@@ -367,74 +370,57 @@ void CCommLayerServerDBus::Crash(const std::string& progname, const std::string&
send_flush_and_unref(msg);
}
-void CCommLayerServerDBus::JobStarted(const char* pDest)
+void CCommLayerServerDBus::JobStarted(const char* peer)
{
- DBusMessage* msg = new_signal_msg("JobStarted");
- /* send unicast dbus signal */
- if (!dbus_message_set_destination(msg, pDest))
- die_out_of_memory();
+ DBusMessage* msg = new_signal_msg("JobStarted", peer);
uint64_t nJobID = uint64_t(pthread_self());
dbus_message_append_args(msg,
- DBUS_TYPE_STRING, &pDest, /* TODO: redundant parameter, remove from API */
+ DBUS_TYPE_STRING, &peer, /* TODO: redundant parameter, remove from API */
DBUS_TYPE_UINT64, &nJobID, /* TODO: redundant parameter, remove from API */
DBUS_TYPE_INVALID);
- VERB2 log("Sending signal JobStarted('%s',%llx)", pDest, (unsigned long long)nJobID);
+ VERB2 log("Sending signal JobStarted('%s',%llx)", peer, (unsigned long long)nJobID);
send_flush_and_unref(msg);
}
-void CCommLayerServerDBus::JobDone(const char* pDest, const char* pUUID)
+void CCommLayerServerDBus::JobDone(const char* peer, const char* pUUID)
{
- DBusMessage* msg = new_signal_msg("JobDone");
- /* send unicast dbus signal */
- if (!dbus_message_set_destination(msg, pDest))
- die_out_of_memory();
+ DBusMessage* msg = new_signal_msg("JobDone", peer);
dbus_message_append_args(msg,
- DBUS_TYPE_STRING, &pDest, /* TODO: redundant parameter, remove from API */
+ DBUS_TYPE_STRING, &peer, /* TODO: redundant parameter, remove from API */
DBUS_TYPE_STRING, &pUUID, /* TODO: redundant parameter, remove from API */
DBUS_TYPE_INVALID);
- VERB2 log("Sending signal JobDone('%s','%s')", pDest, pUUID);
+ VERB2 log("Sending signal JobDone('%s','%s')", peer, pUUID);
send_flush_and_unref(msg);
}
-void CCommLayerServerDBus::Error(const std::string& arg1)
+void CCommLayerServerDBus::Error(const std::string& pMessage, const char* peer)
{
- DBusMessage* msg = new_signal_msg("Error");
- const char* c_arg1 = arg1.c_str();
- dbus_message_append_args(msg,
- DBUS_TYPE_STRING, &c_arg1,
- DBUS_TYPE_INVALID);
- send_flush_and_unref(msg);
-}
-
-void CCommLayerServerDBus::Update(const std::string& pMessage, uint64_t job_id)
-{
- DBusMessage* msg = new_signal_msg("Update");
+ DBusMessage* msg = new_signal_msg("Error", peer);
const char* c_message = pMessage.c_str();
dbus_message_append_args(msg,
DBUS_TYPE_STRING, &c_message,
- DBUS_TYPE_UINT64, &job_id,
DBUS_TYPE_INVALID);
send_flush_and_unref(msg);
}
-/* TODO: one Warning()? */
-void CCommLayerServerDBus::Warning(const std::string& pMessage)
+void CCommLayerServerDBus::Update(const std::string& pMessage, const char* peer, uint64_t job_id)
{
- DBusMessage* msg = new_signal_msg("Warning");
+ DBusMessage* msg = new_signal_msg("Update", peer);
const char* c_message = pMessage.c_str();
dbus_message_append_args(msg,
DBUS_TYPE_STRING, &c_message,
+ DBUS_TYPE_UINT64, &job_id, /* TODO: redundant parameter, remove from API */
DBUS_TYPE_INVALID);
send_flush_and_unref(msg);
}
-void CCommLayerServerDBus::Warning(const std::string& pMessage, uint64_t job_id)
+void CCommLayerServerDBus::Warning(const std::string& pMessage, const char* peer, uint64_t job_id)
{
- DBusMessage* msg = new_signal_msg("Warning");
+ DBusMessage* msg = new_signal_msg("Warning", peer);
const char* c_message = pMessage.c_str();
dbus_message_append_args(msg,
DBUS_TYPE_STRING, &c_message,
- DBUS_TYPE_UINT64, &job_id,
+ DBUS_TYPE_UINT64, &job_id, /* TODO: redundant parameter, remove from API */
DBUS_TYPE_INVALID);
send_flush_and_unref(msg);
}
@@ -885,6 +871,8 @@ static DBusHandlerResult message_received(DBusConnection *conn, DBusMessage *msg
const char* member = dbus_message_get_member(msg);
log("%s(method:'%s')", __func__, member);
+ set_client_name(dbus_message_get_sender(msg));
+
DBusMessage* reply = dbus_message_new_method_return(msg);
int r = -1;
if (strcmp(member, "GetCrashInfos") == 0)
@@ -931,6 +919,8 @@ static DBusHandlerResult message_received(DBusConnection *conn, DBusMessage *msg
}
}
+ set_client_name(NULL);
+
return DBUS_HANDLER_RESULT_HANDLED;
}
/* Callback: "DBusObjectPathVTable is unregistered (or its connection is freed)" */