lm: Flush manager output on core shutdown
This commit is contained in:
		
							parent
							
								
									fa6531ab0f
								
							
						
					
					
						commit
						6212df3beb
					
				
					 5 changed files with 15 additions and 11 deletions
				
			
		|  | @ -250,6 +250,8 @@ struct System::Impl { | |||
|         telemetry_session->AddField(Telemetry::FieldType::Performance, "Mean_Frametime_MS", | ||||
|                                     perf_stats->GetMeanFrametime()); | ||||
| 
 | ||||
|         lm_manager.Flush(); | ||||
| 
 | ||||
|         is_powered_on = false; | ||||
|         exit_lock = false; | ||||
| 
 | ||||
|  |  | |||
|  | @ -13,7 +13,7 @@ namespace Service::LM { | |||
| std::ostream& operator<<(std::ostream& os, DestinationFlag dest) { | ||||
|     std::vector<std::string> array; | ||||
|     const auto check_single_flag = [dest, &array](DestinationFlag check, std::string name) { | ||||
|         if ((static_cast<u32>(check) & static_cast<u32>(dest)) > 0) { | ||||
|         if ((static_cast<u32>(check) & static_cast<u32>(dest)) != 0) { | ||||
|             array.emplace_back(std::move(name)); | ||||
|         } | ||||
|     }; | ||||
|  | @ -75,7 +75,7 @@ std::string FormatField(Field type, const std::vector<u8>& data) { | |||
|         if (data.size() >= sizeof(u32)) { | ||||
|             u32 line; | ||||
|             std::memcpy(&line, data.data(), sizeof(u32)); | ||||
|             return fmt::format("{:08X}", line); | ||||
|             return fmt::format("{}", line); | ||||
|         } | ||||
|         return "[ERROR DECODING LINE NUMBER]"; | ||||
|     case Field::Message: | ||||
|  | @ -114,16 +114,20 @@ void Manager::Log(LogMessage message) { | |||
|     } | ||||
| } | ||||
| 
 | ||||
| void Manager::Flush() { | ||||
|     FinalizeLog(); | ||||
| } | ||||
| 
 | ||||
| void Manager::InitializeLog() { | ||||
|     current_log.clear(); | ||||
| 
 | ||||
|     LOG_INFO(Service_LM, "Initialized new log session!"); | ||||
|     LOG_INFO(Service_LM, "Initialized new log session"); | ||||
| } | ||||
| 
 | ||||
| void Manager::FinalizeLog() { | ||||
|     reporter.SaveLogReport(static_cast<u32>(destination), std::move(current_log)); | ||||
| 
 | ||||
|     LOG_INFO(Service_LM, "Finalized current log session!"); | ||||
|     LOG_INFO(Service_LM, "Finalized current log session"); | ||||
| } | ||||
| 
 | ||||
| } // namespace Service::LM
 | ||||
|  |  | |||
|  | @ -81,7 +81,7 @@ std::string FormatField(Field type, const std::vector<u8>& data); | |||
| 
 | ||||
| class Manager { | ||||
| public: | ||||
|     Manager(Core::Reporter& reporter); | ||||
|     explicit Manager(Core::Reporter& reporter); | ||||
|     ~Manager(); | ||||
| 
 | ||||
|     void SetEnabled(bool enabled); | ||||
|  | @ -89,6 +89,8 @@ public: | |||
| 
 | ||||
|     void Log(LogMessage message); | ||||
| 
 | ||||
|     void Flush(); | ||||
| 
 | ||||
| private: | ||||
|     void InitializeLog(); | ||||
|     void FinalizeLog(); | ||||
|  |  | |||
|  | @ -8,7 +8,6 @@ | |||
| #include <fmt/chrono.h> | ||||
| #include <fmt/format.h> | ||||
| #include <fmt/ostream.h> | ||||
| #include <fmt/time.h> | ||||
| #include <json.hpp> | ||||
| 
 | ||||
| #include "common/file_util.h" | ||||
|  | @ -393,11 +392,11 @@ void Reporter::SaveLogReport(u32 destination, std::vector<Service::LM::LogMessag | |||
|                                           out["type"] = fmt::format("{}", kv.first); | ||||
|                                           out["data"] = | ||||
|                                               Service::LM::FormatField(kv.first, kv.second); | ||||
|                                           return std::move(out); | ||||
|                                           return out; | ||||
|                                       }); | ||||
| 
 | ||||
|                        out["fields"] = std::move(fields); | ||||
|                        return std::move(out); | ||||
|                        return out; | ||||
|                    }); | ||||
| 
 | ||||
|     out["log_messages"] = std::move(json_messages); | ||||
|  |  | |||
|  | @ -59,9 +59,6 @@ public: | |||
|         New, | ||||
|         System, | ||||
|     }; | ||||
|     // Used by prepo services
 | ||||
|     void SavePlayReport(u64 title_id, u64 process_id, std::vector<std::vector<u8>> data, | ||||
|                         std::optional<u128> user_id = {}) const; | ||||
| 
 | ||||
|     void SavePlayReport(PlayReportType type, u64 title_id, std::vector<std::vector<u8>> data, | ||||
|                         std::optional<u64> process_id = {}, std::optional<u128> user_id = {}) const; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Zach Hilman
						Zach Hilman