summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Daemon/CommLayerServer.cpp14
-rw-r--r--src/Daemon/CommLayerServer.h17
-rw-r--r--src/Daemon/CommLayerServerDBus.cpp107
-rw-r--r--src/Daemon/CommLayerServerDBus.h13
-rw-r--r--src/Daemon/CommLayerServerSocket.cpp8
-rw-r--r--src/Daemon/CrashWatcher.cpp45
-rw-r--r--src/Daemon/CrashWatcher.h35
-rw-r--r--src/Daemon/Daemon.cpp1
8 files changed, 60 insertions, 180 deletions
diff --git a/src/Daemon/CommLayerServer.cpp b/src/Daemon/CommLayerServer.cpp
index 1ba1a3c0..ed47c2ac 100644
--- a/src/Daemon/CommLayerServer.cpp
+++ b/src/Daemon/CommLayerServer.cpp
@@ -8,17 +8,3 @@ CCommLayerServer::CCommLayerServer()
CCommLayerServer::~CCommLayerServer()
{
}
-
-void CCommLayerServer::Attach(CCrashWatcher *pCW)
-{
- m_pCrashWatcher = pCW;
-}
-void CCommLayerServer::Detach(CCrashWatcher *pCW)
-{
- m_pCrashWatcher = NULL;
-}
-void CCommLayerServer::Notify(const std::string& pMessage)
-{
- if (m_pCrashWatcher)
- m_pCrashWatcher->Status(pMessage);
-}
diff --git a/src/Daemon/CommLayerServer.h b/src/Daemon/CommLayerServer.h
index 6d9270d4..0953c37d 100644
--- a/src/Daemon/CommLayerServer.h
+++ b/src/Daemon/CommLayerServer.h
@@ -1,32 +1,17 @@
#ifndef COMMLAYERSERVER_H_
#define COMMLAYERSERVER_H_
-#include <vector>
-#include <map>
#include <string>
-#include <sstream>
-#include <iostream>
-#include "Observer.h"
+#include "abrtlib.h"
#include "CrashTypes.h"
class CCrashWatcher;
class CCommLayerServer {
- protected:
- CCrashWatcher *m_pCrashWatcher;
public:
CCommLayerServer();
virtual ~CCommLayerServer();
- /* observer */
- void Attach(CCrashWatcher *pCW);
- void Detach(CCrashWatcher *pCW);
- void Notify(const std::string& pMessage);
-
- virtual vector_crash_infos_t GetCrashInfos(const std::string& pSender) = 0;
- virtual report_status_t Report(const map_crash_report_t& pReport, const std::string& pSender) = 0;
- virtual bool DeleteDebugDump(const std::string& pUUID, const std::string& pSender) = 0;
-
/* just stubs to be called when not implemented in specific comm layer */
virtual void Crash(const std::string& arg1) {}
virtual void AnalyzeComplete(const map_crash_report_t& arg1) {}
diff --git a/src/Daemon/CommLayerServerDBus.cpp b/src/Daemon/CommLayerServerDBus.cpp
index 70ae9e9c..82b9c9c3 100644
--- a/src/Daemon/CommLayerServerDBus.cpp
+++ b/src/Daemon/CommLayerServerDBus.cpp
@@ -56,119 +56,89 @@ CCommLayerServerDBus::~CCommLayerServerDBus()
* DBus call handlers
*/
-/* unmarshaler (non-virtual private function) */
DBus::Message CCommLayerServerDBus::_GetCrashInfos_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
- //FIXME: @@@REMOVE!!
- vector_crash_infos_t argout1 = GetCrashInfos(call.sender());
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ vector_crash_infos_t argout1 = GetCrashInfos(to_string(unix_uid));
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << argout1;
return reply;
}
-/* handler (public function) */
-vector_crash_infos_t CCommLayerServerDBus::GetCrashInfos(const std::string &pSender)
-{
- vector_crash_infos_t crashInfos;
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- crashInfos = m_pCrashWatcher->GetCrashInfos(to_string(unix_uid));
- return crashInfos;
-}
DBus::Message CCommLayerServerDBus::_CreateReport_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
-
std::string argin1;
ri >> argin1;
- uint64_t argout1 = CreateReport_t(argin1, call.sender());
- if (sizeof (uint64_t) != 8) abort ();
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ uint64_t argout1 = CreateReport_t(argin1, to_string(unix_uid), call.sender());
//map_crash_report_t argout1 = CreateReport(argin1,call.sender());
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << argout1;
return reply;
}
-uint64_t CCommLayerServerDBus::CreateReport_t(const std::string &pUUID,const std::string &pSender)
-{
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- map_crash_report_t crashReport;
- uint64_t job_id = m_pCrashWatcher->CreateReport_t(pUUID, to_string(unix_uid), pSender);
- return job_id;
-}
DBus::Message CCommLayerServerDBus::_Report_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
-
map_crash_report_t argin1;
ri >> argin1;
- report_status_t argout1 = Report(argin1, call.sender());
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ report_status_t argout1 = Report(argin1, to_string(unix_uid));
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << argout1;
return reply;
}
-report_status_t CCommLayerServerDBus::Report(const map_crash_report_t& pReport, const std::string &pSender)
-{
- report_status_t rs;
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- rs = m_pCrashWatcher->Report(pReport, to_string(unix_uid));
- return rs;
-}
DBus::Message CCommLayerServerDBus::_DeleteDebugDump_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
-
std::string argin1;
ri >> argin1;
- bool argout1 = DeleteDebugDump(argin1, call.sender());
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ bool argout1 = DeleteDebugDump(argin1, to_string(unix_uid));
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << argout1;
return reply;
}
-bool CCommLayerServerDBus::DeleteDebugDump(const std::string& pUUID, const std::string& pSender)
-{
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- m_pCrashWatcher->DeleteDebugDump(pUUID,to_string(unix_uid));
- return true;
-}
DBus::Message CCommLayerServerDBus::_GetJobResult_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
uint64_t job_id;
ri >> job_id;
- map_crash_report_t report = GetJobResult(job_id, call.sender());
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ map_crash_report_t report = GetJobResult(job_id, to_string(unix_uid));
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << report;
return reply;
}
-map_crash_report_t CCommLayerServerDBus::GetJobResult(uint64_t pJobID, const std::string& pSender)
-{
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- map_crash_report_t crashReport;
- crashReport = m_pCrashWatcher->GetJobResult(pJobID,to_string(unix_uid));
- return crashReport;
-}
DBus::Message CCommLayerServerDBus::_GetPluginsInfo_stub(const DBus::CallMessage &call)
{
- vector_map_string_string_t plugins_info;
- plugins_info = GetPluginsInfo();
+ vector_map_string_string_t plugins_info = GetPluginsInfo();
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << plugins_info;
return reply;
}
-vector_map_string_string_t CCommLayerServerDBus::GetPluginsInfo()
-{
- return m_pCrashWatcher->GetPluginsInfo();
-}
DBus::Message CCommLayerServerDBus::_GetPluginSettings_stub(const DBus::CallMessage &call)
{
@@ -176,18 +146,15 @@ DBus::Message CCommLayerServerDBus::_GetPluginSettings_stub(const DBus::CallMess
std::string PluginName;
std::string uid;
ri >> PluginName;
- map_plugin_settings_t plugin_settings;
- plugin_settings = GetPluginSettings(PluginName, call.sender());
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ map_plugin_settings_t plugin_settings = GetPluginSettings(PluginName, to_string(unix_uid));
+
DBus::ReturnMessage reply(call);
DBus::MessageIter wi = reply.writer();
wi << plugin_settings;
return reply;
}
-map_plugin_settings_t CCommLayerServerDBus::GetPluginSettings(const std::string& pName, const std::string& pSender)
-{
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- return m_pCrashWatcher->GetPluginSettings(pName, to_string(unix_uid));
-}
DBus::Message CCommLayerServerDBus::_SetPluginSettings_stub(const DBus::CallMessage &call)
{
@@ -196,45 +163,39 @@ DBus::Message CCommLayerServerDBus::_SetPluginSettings_stub(const DBus::CallMess
map_plugin_settings_t plugin_settings;
ri >> PluginName;
ri >> plugin_settings;
- SetPluginSettings(PluginName, call.sender(), plugin_settings);
+
+ unsigned long unix_uid = m_pConn->sender_unix_uid(call.sender());
+ SetPluginSettings(PluginName, to_string(unix_uid), plugin_settings);
+
DBus::ReturnMessage reply(call);
return reply;
}
-void CCommLayerServerDBus::SetPluginSettings(const std::string& pName, const std::string& pSender, const map_plugin_settings_t& pSettings)
-{
- unsigned long unix_uid = m_pConn->sender_unix_uid(pSender.c_str());
- return m_pCrashWatcher->SetPluginSettings(pName, to_string(unix_uid), pSettings);
-}
DBus::Message CCommLayerServerDBus::_RegisterPlugin_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
std::string PluginName;
ri >> PluginName;
+
RegisterPlugin(PluginName);
+
DBus::ReturnMessage reply(call);
//DBus::MessageIter wi = reply.writer();
//wi << plugin_settings;
return reply;
}
-void CCommLayerServerDBus::RegisterPlugin(const std::string& pName)
-{
- return m_pCrashWatcher->RegisterPlugin(pName);
-}
DBus::Message CCommLayerServerDBus::_UnRegisterPlugin_stub(const DBus::CallMessage &call)
{
DBus::MessageIter ri = call.reader();
std::string PluginName;
ri >> PluginName;
+
UnRegisterPlugin(PluginName);
+
DBus::ReturnMessage reply(call);
return reply;
}
-void CCommLayerServerDBus::UnRegisterPlugin(const std::string& pName)
-{
- return m_pCrashWatcher->UnRegisterPlugin(pName);
-}
/*
diff --git a/src/Daemon/CommLayerServerDBus.h b/src/Daemon/CommLayerServerDBus.h
index bbc0c3d1..e51578e2 100644
--- a/src/Daemon/CommLayerServerDBus.h
+++ b/src/Daemon/CommLayerServerDBus.h
@@ -21,7 +21,6 @@ class CCommLayerServerDBus
/* DBus call handlers */
private:
- /* unmarshalers */
DBus::Message _GetCrashInfos_stub(const DBus::CallMessage &call);
DBus::Message _CreateReport_stub(const DBus::CallMessage &call);
DBus::Message _Report_stub(const DBus::CallMessage &call);
@@ -32,18 +31,6 @@ class CCommLayerServerDBus
DBus::Message _SetPluginSettings_stub(const DBus::CallMessage &call);
DBus::Message _RegisterPlugin_stub(const DBus::CallMessage &call);
DBus::Message _UnRegisterPlugin_stub(const DBus::CallMessage &call);
- public:
- /* handlers */
- virtual vector_crash_infos_t GetCrashInfos(const std::string& pSender);
- virtual uint64_t CreateReport_t(const std::string& pUUID, const std::string& pSender);
- virtual report_status_t Report(const map_crash_report_t& pReport, const std::string& pSender);
- virtual bool DeleteDebugDump(const std::string& pUUID, const std::string& pSender);
- virtual map_crash_report_t GetJobResult(uint64_t pJobID, const std::string& pSender);
- virtual vector_map_string_string_t GetPluginsInfo();
- virtual map_plugin_settings_t GetPluginSettings(const std::string& pName, const std::string& pSender);
- virtual void SetPluginSettings(const std::string& pName, const std::string& pSender, const map_plugin_settings_t& pSettings);
- virtual void RegisterPlugin(const std::string& pName);
- virtual void UnRegisterPlugin(const std::string& pName);
/* DBus signal senders */
public:
diff --git a/src/Daemon/CommLayerServerSocket.cpp b/src/Daemon/CommLayerServerSocket.cpp
index 5a4f00b1..50018762 100644
--- a/src/Daemon/CommLayerServerSocket.cpp
+++ b/src/Daemon/CommLayerServerSocket.cpp
@@ -207,7 +207,7 @@ CCommLayerServerSocket::~CCommLayerServerSocket()
vector_crash_infos_t CCommLayerServerSocket::GetCrashInfos(const std::string &pSender)
{
vector_crash_infos_t crashInfos;
- crashInfos = m_pCrashWatcher->GetCrashInfos(pSender);
+ crashInfos = ::GetCrashInfos(pSender);
return crashInfos;
}
@@ -215,20 +215,20 @@ vector_crash_infos_t CCommLayerServerSocket::GetCrashInfos(const std::string &pS
//map_crash_report_t CCommLayerServerSocket::CreateReport(const std::string &pUUID,const std::string &pSender)
//{
// map_crash_report_t crashReport;
-// crashReport = m_pCrashWatcher->CreateReport(pUUID, pSender);
+// crashReport = ::CreateReport(pUUID, pSender);
// return crashReport;
//}
report_status_t CCommLayerServerSocket::Report(const map_crash_report_t& pReport, const std::string& pSender)
{
report_status_t rs;
- rs = m_pCrashWatcher->Report(pReport, pSender);
+ rs = ::Report(pReport, pSender);
return rs;
}
bool CCommLayerServerSocket::DeleteDebugDump(const std::string& pUUID, const std::string& pSender)
{
- m_pCrashWatcher->DeleteDebugDump(pUUID, pSender);
+ ::DeleteDebugDump(pUUID, pSender);
return true;
}
diff --git a/src/Daemon/CrashWatcher.cpp b/src/Daemon/CrashWatcher.cpp
index 41f0fa78..07dfa126 100644
--- a/src/Daemon/CrashWatcher.cpp
+++ b/src/Daemon/CrashWatcher.cpp
@@ -53,7 +53,7 @@ CCrashWatcher::~CCrashWatcher()
{
}
-vector_crash_infos_t CCrashWatcher::GetCrashInfos(const std::string &pUID)
+vector_crash_infos_t GetCrashInfos(const std::string &pUID)
{
vector_crash_infos_t retval;
log("Getting crash infos...");
@@ -172,7 +172,7 @@ static void *create_report(void *arg)
/* Bogus value. pthreads require us to return void* */
return NULL;
}
-uint64_t CCrashWatcher::CreateReport_t(const std::string &pUUID,const std::string &pUID, const std::string &pSender)
+uint64_t CreateReport_t(const std::string &pUUID,const std::string &pUID, const std::string &pSender)
{
thread_data_t *thread_data = (thread_data_t *)xzalloc(sizeof(thread_data_t));
thread_data->UUID = xstrdup(pUUID.c_str());
@@ -190,34 +190,7 @@ uint64_t CCrashWatcher::CreateReport_t(const std::string &pUUID,const std::strin
return 0;
}
-report_status_t CCrashWatcher::Report(const map_crash_report_t& pReport, const std::string& pUID)
-{
- //#define FIELD(X) crashReport.m_s##X = pReport[#X];
- //crashReport.m_sUUID = pReport["UUID"];
- //ALL_CRASH_REPORT_FIELDS;
- //#undef FIELD
- //for (dbus_map_report_info_t::iterator it = pReport.begin(); it!=pReport.end(); ++it) {
- // std::cerr << it->second << std::endl;
- //}
- report_status_t rs;
- try
- {
- rs = ::Report(pReport, pUID);
- }
- catch (CABRTException& e)
- {
- if (e.type() == EXCEP_FATAL)
- {
- throw e;
- }
- g_cw->Warning(e.what());
- g_cw->Status(e.what());
- return rs;
- }
- return rs;
-}
-
-bool CCrashWatcher::DeleteDebugDump(const std::string& pUUID, const std::string& pUID)
+bool DeleteDebugDump(const std::string& pUUID, const std::string& pUID)
{
try
{
@@ -238,7 +211,7 @@ bool CCrashWatcher::DeleteDebugDump(const std::string& pUUID, const std::string&
return true;
}
-map_crash_report_t CCrashWatcher::GetJobResult(uint64_t pJobID, const std::string& pSender)
+map_crash_report_t GetJobResult(uint64_t pJobID, const std::string& pSender)
{
/* FIXME: once we return the result, we should remove it from map to free memory
- use some TTL to clean the memory even if client won't get it
@@ -247,7 +220,7 @@ map_crash_report_t CCrashWatcher::GetJobResult(uint64_t pJobID, const std::strin
return g_pending_jobs[pSender][pJobID];
}
-vector_map_string_string_t CCrashWatcher::GetPluginsInfo()
+vector_map_string_string_t GetPluginsInfo()
{
try
{
@@ -266,7 +239,7 @@ vector_map_string_string_t CCrashWatcher::GetPluginsInfo()
return vector_map_string_string_t();
}
-map_plugin_settings_t CCrashWatcher::GetPluginSettings(const std::string& pName, const std::string& pUID)
+map_plugin_settings_t GetPluginSettings(const std::string& pName, const std::string& pUID)
{
try
{
@@ -285,7 +258,7 @@ map_plugin_settings_t CCrashWatcher::GetPluginSettings(const std::string& pName,
return map_plugin_settings_t();
}
-void CCrashWatcher::RegisterPlugin(const std::string& pName)
+void RegisterPlugin(const std::string& pName)
{
try
{
@@ -301,7 +274,7 @@ void CCrashWatcher::RegisterPlugin(const std::string& pName)
}
}
-void CCrashWatcher::UnRegisterPlugin(const std::string& pName)
+void UnRegisterPlugin(const std::string& pName)
{
try
{
@@ -317,7 +290,7 @@ void CCrashWatcher::UnRegisterPlugin(const std::string& pName)
}
}
-void CCrashWatcher::SetPluginSettings(const std::string& pName, const std::string& pUID, const map_plugin_settings_t& pSettings)
+void SetPluginSettings(const std::string& pName, const std::string& pUID, const map_plugin_settings_t& pSettings)
{
try
{
diff --git a/src/Daemon/CrashWatcher.h b/src/Daemon/CrashWatcher.h
index e4fb626a..937b3218 100644
--- a/src/Daemon/CrashWatcher.h
+++ b/src/Daemon/CrashWatcher.h
@@ -53,29 +53,18 @@ class CCrashWatcher
virtual void Status(const std::string& pMessage, const std::string& pDest="0");
virtual void Debug(const std::string& pMessage);
virtual void Warning(const std::string& pMessage);
-
- /* New methods */
-static
- vector_crash_infos_t GetCrashInfos(const std::string &pUID);
-static
- uint64_t CreateReport_t(const std::string &pUUID,const std::string &pUID, const std::string &pSender);
-static
- report_status_t Report(const map_crash_report_t& pReport, const std::string &pUID);
-static
- bool DeleteDebugDump(const std::string& pUUID, const std::string& pUID);
-static
- map_crash_report_t GetJobResult(uint64_t pJobID, const std::string& pSender);
- /* plugins related */
-static
- vector_map_string_string_t GetPluginsInfo();
-static
- map_plugin_settings_t GetPluginSettings(const std::string& pName, const std::string& pUID);
-static
- void SetPluginSettings(const std::string& pName, const std::string& pUID, const map_plugin_settings_t& pSettings);
-static
- void RegisterPlugin(const std::string& pName);
-static
- void UnRegisterPlugin(const std::string& pName);
};
+vector_crash_infos_t GetCrashInfos(const std::string &pUID);
+uint64_t CreateReport_t(const std::string &pUUID,const std::string &pUID, const std::string &pSender);
+bool DeleteDebugDump(const std::string& pUUID, const std::string& pUID);
+map_crash_report_t GetJobResult(uint64_t pJobID, const std::string& pSender);
+
+/* plugins related */
+vector_map_string_string_t GetPluginsInfo();
+map_plugin_settings_t GetPluginSettings(const std::string& pName, const std::string& pUID);
+void SetPluginSettings(const std::string& pName, const std::string& pUID, const map_plugin_settings_t& pSettings);
+void RegisterPlugin(const std::string& pName);
+void UnRegisterPlugin(const std::string& pName);
+
#endif /*CRASHWATCHER_H_*/
diff --git a/src/Daemon/Daemon.cpp b/src/Daemon/Daemon.cpp
index 53b865ce..58970b05 100644
--- a/src/Daemon/Daemon.cpp
+++ b/src/Daemon/Daemon.cpp
@@ -597,7 +597,6 @@ int main(int argc, char** argv)
#elif ENABLE_SOCKET
g_pCommLayer = new CCommLayerServerSocket();
#endif
- g_pCommLayer->Attach(&watcher);
/* (comment here) */
pGio = g_io_channel_unix_new(inotify_fd);
g_io_add_watch(pGio, G_IO_IN, handle_event_cb, NULL);