diff options
Diffstat (limited to 'lib/MiddleWare')
-rw-r--r-- | lib/MiddleWare/MiddleWare.cpp | 87 | ||||
-rw-r--r-- | lib/MiddleWare/MiddleWare.h | 44 | ||||
-rw-r--r-- | lib/MiddleWare/Reporter.h | 15 | ||||
-rw-r--r-- | lib/MiddleWare/Settings.h | 9 |
4 files changed, 57 insertions, 98 deletions
diff --git a/lib/MiddleWare/MiddleWare.cpp b/lib/MiddleWare/MiddleWare.cpp index 30092b4..2f86c00 100644 --- a/lib/MiddleWare/MiddleWare.cpp +++ b/lib/MiddleWare/MiddleWare.cpp @@ -85,31 +85,31 @@ void CMiddleWare::LoadSettings(const std::string& pPath) } } -void CMiddleWare::DebugDump2Report(const std::string& pDebugDumpDir, CReporter::report_t& pReport) +void CMiddleWare::DebugDump2Report(const std::string& pDebugDumpDir, crash_report_t& pCrashReport) { CDebugDump dd; dd.Open(pDebugDumpDir); - dd.LoadText(FILENAME_ARCHITECTURE, pReport.m_sArchitecture); - dd.LoadText(FILENAME_KERNEL, pReport.m_sKernel); - dd.LoadText(FILENAME_PACKAGE, pReport.m_sPackage); - dd.LoadText(FILENAME_EXECUTABLE, pReport.m_sExecutable); - dd.LoadText(FILENAME_CMDLINE, pReport.m_sCmdLine); + dd.LoadText(FILENAME_ARCHITECTURE, pCrashReport.m_sArchitecture); + dd.LoadText(FILENAME_KERNEL, pCrashReport.m_sKernel); + dd.LoadText(FILENAME_PACKAGE, pCrashReport.m_sPackage); + dd.LoadText(FILENAME_EXECUTABLE, pCrashReport.m_sExecutable); + dd.LoadText(FILENAME_CMDLINE, pCrashReport.m_sCmdLine); if (dd.Exist(FILENAME_TEXTDATA1)) { - dd.LoadText(FILENAME_TEXTDATA1, pReport.m_sTextData1); + dd.LoadText(FILENAME_TEXTDATA1, pCrashReport.m_sTextData1); } if (dd.Exist(FILENAME_TEXTDATA2)) { - dd.LoadText(FILENAME_TEXTDATA2, pReport.m_sTextData2); + dd.LoadText(FILENAME_TEXTDATA2, pCrashReport.m_sTextData2); } if (dd.Exist(FILENAME_BINARYDATA1)) { - pReport.m_bBinaryData1 = pDebugDumpDir + "/" + FILENAME_BINARYDATA1; + pCrashReport.m_sBinaryData1 = pDebugDumpDir + "/" + FILENAME_BINARYDATA1; } if (dd.Exist(FILENAME_BINARYDATA2)) { - pReport.m_bBinaryData2 = pDebugDumpDir + "/" + FILENAME_BINARYDATA2; + pCrashReport.m_sBinaryData2 = pDebugDumpDir + "/" + FILENAME_BINARYDATA2; } dd.Close(); } @@ -154,32 +154,9 @@ void CMiddleWare::CreateReportApplication(const std::string& pApplication, return application->CreateReport(pDebugDumpDir); } - -void CMiddleWare::CreateReport(const std::string& pDebugDumpDir, - crash_report_t& pCrashReport) -{ - CDebugDump dd; - dd.Open(pDebugDumpDir); - if (dd.Exist(FILENAME_APPLICATION)) - { - std::string application; - dd.LoadText(FILENAME_APPLICATION, application); - pCrashReport.m_sPlugin2ReportersName = application; - CreateReportApplication(application, pDebugDumpDir); - } - if (dd.Exist(FILENAME_LANGUAGE)) - { - std::string language; - dd.LoadText(FILENAME_LANGUAGE, language); - pCrashReport.m_sPlugin2ReportersName = language; - CreateReportLanguage(language, pDebugDumpDir); - } - DebugDump2Report(pDebugDumpDir, pCrashReport.m_Report); - dd.Close(); -} - void CMiddleWare::CreateReport(const std::string& pUUID, const std::string& pUID, + crash_context_t& pCrashContext, crash_report_t& pCrashReport) { CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase); @@ -187,33 +164,51 @@ void CMiddleWare::CreateReport(const std::string& pUUID, database->Connect(); row = database->GetUUIDData(pUUID, pUID); database->DisConnect(); + if (row.m_sUUID != pUUID) { throw std::string("CMiddleWare::GetReport(): UUID '"+pUUID+"' is not in database."); } - pCrashReport.m_sUUID = pUUID; - pCrashReport.m_sUID = pUID; - CreateReport(row.m_sDebugDumpPath, pCrashReport); + + std::string appLan; + CDebugDump dd; + dd.Open(row.m_sDebugDumpDir); + if (dd.Exist(FILENAME_APPLICATION)) + { + dd.LoadText(FILENAME_APPLICATION, appLan); + CreateReportApplication(appLan, row.m_sDebugDumpDir); + } + if (dd.Exist(FILENAME_LANGUAGE)) + { + dd.LoadText(FILENAME_LANGUAGE, appLan); + CreateReportLanguage(appLan, row.m_sDebugDumpDir); + } + DebugDump2Report(row.m_sDebugDumpDir, pCrashReport); + dd.Close(); + pCrashContext.m_sLanAppPlugin = appLan; + pCrashContext.m_sUUID = pUUID; + pCrashContext.m_sUID = pUID; } -void CMiddleWare::Report(const crash_report_t& pCrashReport) +void CMiddleWare::Report(const crash_context_t& pCrashContext, + const crash_report_t& pCrashReport) { - std::string plugin2ReportersName = pCrashReport.m_sPlugin2ReportersName; - if (m_mapPlugin2Reporters.find(plugin2ReportersName) != m_mapPlugin2Reporters.end()) + std::string lanAppPlugin = pCrashContext.m_sLanAppPlugin; + if (m_mapPlugin2Reporters.find(lanAppPlugin) != m_mapPlugin2Reporters.end()) { set_reporters_t::iterator it_r; - for (it_r = m_mapPlugin2Reporters[plugin2ReportersName].begin(); - it_r != m_mapPlugin2Reporters[plugin2ReportersName].end(); + for (it_r = m_mapPlugin2Reporters[lanAppPlugin].begin(); + it_r != m_mapPlugin2Reporters[lanAppPlugin].end(); it_r++) { CReporter* reporter = m_pPluginManager->GetReporter(*it_r); - reporter->Report(pCrashReport.m_Report); + reporter->Report(pCrashReport); } } CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase); database->Connect(); - database->SetReported(pCrashReport.m_sUUID, pCrashReport.m_sUID); + database->SetReported(pCrashContext.m_sUUID, pCrashContext.m_sUID); database->DisConnect(); } @@ -287,7 +282,7 @@ int CMiddleWare::SaveDebugDump(const std::string& pDebugDumpDir, crash_info_t& p return 1; } -CMiddleWare::vector_crash_infos_t CMiddleWare::GetCrashInfos(const std::string& pUID) +vector_crash_infos_t CMiddleWare::GetCrashInfos(const std::string& pUID) { CDatabase* database = m_pPluginManager->GetDatabase(m_sDatabase); vector_database_rows_t rows; @@ -306,7 +301,7 @@ CMiddleWare::vector_crash_infos_t CMiddleWare::GetCrashInfos(const std::string& info.m_sUID = rows[ii].m_sUID; info.m_sCount = rows[ii].m_sCount; - dd.Open(rows[ii].m_sDebugDumpPath); + dd.Open(rows[ii].m_sDebugDumpDir); dd.LoadText(FILENAME_EXECUTABLE, data); info.m_sExecutable = data; dd.LoadText(FILENAME_PACKAGE, data); diff --git a/lib/MiddleWare/MiddleWare.h b/lib/MiddleWare/MiddleWare.h index 396a364..ed94f8b 100644 --- a/lib/MiddleWare/MiddleWare.h +++ b/lib/MiddleWare/MiddleWare.h @@ -25,38 +25,15 @@ #define MIDDLEWARE_H_ #include "PluginManager.h" -#include <set> -#include <string> - +#include "CrashTypes.h" +#include "MiddleWareTypes.h" class CMiddleWare { - public: - - typedef struct SCrashInfo - { - std::string m_sUUID; - std::string m_sUID; - std::string m_sCount; - std::string m_sExecutable; - std::string m_sPackage; - std::string m_sTime; - } crash_info_t; - - typedef struct SCrashReport - { - std::string m_sUUID; - std::string m_sUID; - std::string m_sPlugin2ReportersName; - CReporter::report_t m_Report; - } crash_report_t; - - typedef std::vector<crash_info_t> vector_crash_infos_t; - private: - typedef set_settings_t set_blacklist_t; - typedef set_settings_t set_enabled_plugins_t; - typedef set_settings_t set_reporters_t; + typedef set_strings_t set_blacklist_t; + typedef set_strings_t set_enabled_plugins_t; + typedef set_strings_t set_reporters_t; typedef std::map<std::string, set_reporters_t> map_plugin2reporters_t; CPluginManager* m_pPluginManager; @@ -78,9 +55,7 @@ class CMiddleWare void LoadSettings(const std::string& pPath); void DebugDump2Report(const std::string& pDebugDumpDir, - CReporter::report_t& pReport); - void CreateReport(const std::string& pDebugDumpDir, - crash_report_t& pReport); + crash_report_t& pCrashReport); public: @@ -95,8 +70,11 @@ class CMiddleWare void CreateReport(const std::string& pUUID, const std::string& pUID, - crash_report_t& pReport); - void Report(const crash_report_t& pReport); + crash_context_t& pCrashContext, + crash_report_t& pCrashReport); + + void Report(const crash_context_t& pCrashContext, + const crash_report_t& pCrashReport); int SaveDebugDump(const std::string& pDebugDumpDir, crash_info_t& pCrashInfo); vector_crash_infos_t GetCrashInfos(const std::string& pUID); diff --git a/lib/MiddleWare/Reporter.h b/lib/MiddleWare/Reporter.h index 8f23065..80fe668 100644 --- a/lib/MiddleWare/Reporter.h +++ b/lib/MiddleWare/Reporter.h @@ -24,25 +24,14 @@ #include <string> #include "Plugin.h" +#include "CrashTypes.h" class CReporter : public CPlugin { public: - typedef struct SReport - { - std::string m_sArchitecture; - std::string m_sKernel; - std::string m_sExecutable; - std::string m_sCmdLine; - std::string m_sPackage; - std::string m_sTextData1; - std::string m_sTextData2; - std::string m_bBinaryData1; - std::string m_bBinaryData2; - } report_t; virtual ~CReporter() {} - virtual void Report(const report_t& pReport) = 0; + virtual void Report(const crash_report_t& pReport) = 0; }; #endif /* REPORTER_H_ */ diff --git a/lib/MiddleWare/Settings.h b/lib/MiddleWare/Settings.h index 46d50a5..1629ce9 100644 --- a/lib/MiddleWare/Settings.h +++ b/lib/MiddleWare/Settings.h @@ -22,13 +22,10 @@ #ifndef SETTINGSFUNC_H_ #define SETTINGSFUNC_H_ -#include "Settings.h" -#include <string> -#include <map> -#include <set> +#include "MiddleWareTypes.h" -typedef std::map<std::string, std::string> map_settings_t; -typedef std::set<std::string> set_settings_t; +typedef map_string_string_t map_settings_t; +typedef set_strings_t set_settings_t; void load_settings(const std::string& path, map_settings_t& settings); void save_settings(const std::string& path, const map_settings_t& settings); |