diff options
Diffstat (limited to 'lib/MiddleWare/MiddleWare.cpp')
-rw-r--r-- | lib/MiddleWare/MiddleWare.cpp | 87 |
1 files changed, 41 insertions, 46 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); |