diff options
author | Zdenek Prikryl <zprikryl@redhat.com> | 2009-02-11 10:20:53 +0100 |
---|---|---|
committer | Zdenek Prikryl <zprikryl@redhat.com> | 2009-02-11 10:20:53 +0100 |
commit | 021c815746d47f7fe161a27f709debfd2491eaf7 (patch) | |
tree | 52710b6f4846d8090ea5c40c1735b07000ed10b1 /lib | |
parent | 27b099da7037367d2f5b165406e087b4bec64a19 (diff) | |
download | abrt-021c815746d47f7fe161a27f709debfd2491eaf7.tar.gz abrt-021c815746d47f7fe161a27f709debfd2491eaf7.tar.xz abrt-021c815746d47f7fe161a27f709debfd2491eaf7.zip |
added functionality for getting info about crash
Diffstat (limited to 'lib')
-rw-r--r-- | lib/MiddleWare/MiddleWare.cpp | 89 | ||||
-rw-r--r-- | lib/MiddleWare/MiddleWare.h | 22 |
2 files changed, 77 insertions, 34 deletions
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp index 8cd4bec2..d52fbdae 100644 --- a/lib/MiddleWare/MiddleWare.cpp +++ b/lib/MiddleWare/MiddleWare.cpp @@ -118,12 +118,12 @@ std::string CMiddleWare::GetLocalUUIDApplication(const std::string& pApplication } -void CMiddleWare::GetReport(const std::string& pUUID) +void CMiddleWare::GetReport(const std::string& pUUID, const std::string& pUID) { CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase); database_row_t row; database->Connect(); - row = database->GetUUIDData(pUUID); + row = database->GetUUIDData(pUUID, pUID); database->DisConnect(); if (row.m_sUUID != pUUID) { @@ -137,25 +137,26 @@ int CMiddleWare::Report(const std::string& pReport) // TODO: write this } -void CMiddleWare::SaveDebugDumpToDatabase(const std::string& pDebugDumpPath) +int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpPath, crash_info_t& pCrashInfo) { CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase); std::string UUID; - std::string architecture; - std::string kernel; - std::string executable; - std::string package; std::string UID; - std::string time; - std::string textData1; + std::string package; + std::string executable; CDebugDump dd; - dd.Open(pDebugDumpPath); - dd.LoadText(FILENAME_EXECUTABLE, executable); - // TODO: blacklist + dd.LoadText(FILENAME_PACKAGE, package); + + if (package == "" || + m_setBlackList.find(package.substr(0, package.find("-"))) != m_setBlackList.end()) + { + dd.Delete(pDebugDumpPath); + return 0; + } if (dd.Exist(FILENAME_LANGUAGE)) { @@ -176,36 +177,62 @@ void CMiddleWare::SaveDebugDumpToDatabase(const std::string& pDebugDumpPath) throw std::string("CMiddleWare::SaveDebugDumpToDataBase(): Wrong UUID."); } - dd.LoadText(FILENAME_ARCHITECTURE, architecture); - dd.LoadText(FILENAME_KERNEL, kernel); - dd.LoadText(FILENAME_PACKAGE, package); dd.LoadText(FILENAME_UID, UID); - dd.LoadText(FILENAME_TIME, time); + dd.LoadText(FILENAME_EXECUTABLE, executable); + database_row_t row; database->Connect(); - database->Insert(UUID, - pDebugDumpPath, - architecture, - kernel, - executable, - package, - UID, - time); - - if (dd.Exist(FILENAME_TEXTDATA1)) + database->Insert(UUID, UID, pDebugDumpPath); + row = database->GetUUIDData(UUID, UID); + database->DisConnect(); + + if (row.m_sReported == "1") { - dd.LoadText(FILENAME_TEXTDATA1, textData1); - database->InsertTextData1(UUID, textData1); + dd.Delete(pDebugDumpPath); + return 0; } - database->DisConnect(); + if (row.m_sCount != "1") + { + dd.Delete(pDebugDumpPath); + } + + pCrashInfo.m_sUUID = UUID; + pCrashInfo.m_sUID = UID; + pCrashInfo.m_sCount = row.m_sCount; + pCrashInfo.m_sExecutable = executable; + pCrashInfo.m_sPackage = package; + + return 1; } -vector_database_rows_t CMiddleWare::GetDebugDumps(const std::string& pUID) +CMiddleWare::vector_crash_infos_t CMiddleWare::GetCrashInfos(const std::string& pUID) { CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase); vector_database_rows_t rows; database->Connect(); rows = database->GetUIDData(pUID); database->DisConnect(); - return rows; + + vector_crash_infos_t infos; + std::string data; + int ii; + for (ii = 0; ii < rows.size(); ii++) + { + crash_info_t info; + CDebugDump dd; + info.m_sUUID = rows[ii].m_sUUID; + info.m_sUID = rows[ii].m_sUID; + info.m_sCount = rows[ii].m_sCount; + + dd.Open(rows[ii].m_sDebugDumpPath); + dd.LoadText(FILENAME_EXECUTABLE, data); + info.m_sExecutable = data; + dd.LoadText(FILENAME_PACKAGE, data); + info.m_sPackage = data; + + infos.push_back(info); + } + + return infos; } + diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h index 5fdba84d..b9cf8b65 100644 --- a/lib/MiddleWare/MiddleWare.h +++ b/lib/MiddleWare/MiddleWare.h @@ -26,6 +26,8 @@ #include "PluginManager.h" #include <set> +#include <string> + class CMiddleWare { @@ -45,6 +47,18 @@ class CMiddleWare const std::string& pDebugDumpPath); void LoadSettings(const std::string& pPath); public: + + typedef struct SCrashInfo + { + std::string m_sUUID; + std::string m_sUID; + std::string m_sCount; + std::string m_sExecutable; + std::string m_sPackage; + } crash_info_t; + + typedef std::vector<crash_info_t> vector_crash_infos_t; + CMiddleWare(const std::string& pPlugisConfDir, const std::string& pPlugisLibDir, const std::string& pMiddleWareConfFile); @@ -54,10 +68,12 @@ class CMiddleWare void RegisterPlugin(const std::string& pName); void UnRegisterPlugin(const std::string& pName); - void GetReport(const std::string& pUUID); + void GetReport(const std::string& pUUID, const std::string& pUID); int Report(const std::string& pReport); - void SaveDebugDumpToDatabase(const std::string& pDebugDumpPath); - vector_database_rows_t GetDebugDumps(const std::string& pUID); + + int SaveDebugDump(const std::string& pDebugDumpPath, crash_info_t& pCrashInfo); + + vector_crash_infos_t GetCrashInfos(const std::string& pUID); }; #endif /*MIDDLEWARE_H_*/ |