diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2009-08-26 14:23:11 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2009-08-26 14:23:11 +0200 |
commit | de7e5c9866603aed5f7b9c3ba6986a7ff1d37028 (patch) | |
tree | ef04c1c492e59b7d9c91392761d5a725af4bb632 /src | |
parent | fcd811fdd17adb171478957e31401598dedce166 (diff) | |
download | abrt-de7e5c9866603aed5f7b9c3ba6986a7ff1d37028.tar.gz abrt-de7e5c9866603aed5f7b9c3ba6986a7ff1d37028.tar.xz abrt-de7e5c9866603aed5f7b9c3ba6986a7ff1d37028.zip |
further simplify CObserver, CCommLayerServer, and CCrashWatcher classes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/Daemon/CommLayerServer.cpp | 14 | ||||
-rw-r--r-- | src/Daemon/CommLayerServer.h | 17 | ||||
-rw-r--r-- | src/Daemon/CommLayerServerDBus.cpp | 107 | ||||
-rw-r--r-- | src/Daemon/CommLayerServerDBus.h | 13 | ||||
-rw-r--r-- | src/Daemon/CommLayerServerSocket.cpp | 8 | ||||
-rw-r--r-- | src/Daemon/CrashWatcher.cpp | 45 | ||||
-rw-r--r-- | src/Daemon/CrashWatcher.h | 35 | ||||
-rw-r--r-- | src/Daemon/Daemon.cpp | 1 |
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); |