llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-lldb Author: Vy Nguyen (oontvoo) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/145954.diff 1 Files Affected: - (modified) lldb/source/Core/Telemetry.cpp (+19-15) ``````````diff diff --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp index 6434b11a63ad4..464c1d4071a73 100644 --- a/lldb/source/Core/Telemetry.cpp +++ b/lldb/source/Core/Telemetry.cpp @@ -119,6 +119,19 @@ llvm::Error TelemetryManager::preDispatch(TelemetryInfo *entry) { return llvm::Error::success(); } +// Helper for extracting time field from a Dictionary. +static std::optional<std::chrono::nanoseconds> +GetAsNanosec(StructuredData::Dictionary *dict, llvm::StringRef key) { + auto value = dict->GetValueForKey(key); + if (!value->IsValid()) { + LLDB_LOG(GetLog(LLDBLog::Object), + "Cannot determine {0} from client-telemetry entry", key); + return std::nullopt; + } + + return std::chrono::nanoseconds(value->GetUnsignedIntegerValue(0)); +} + void TelemetryManager::DispatchClientTelemetry( const lldb_private::StructuredDataImpl &entry, Debugger *debugger) { if (!m_config->enable_client_telemetry) @@ -148,23 +161,14 @@ void TelemetryManager::DispatchClientTelemetry( LLDB_LOG(GetLog(LLDBLog::Object), "Cannot determine client_data from client-telemetry entry"); - int64_t start_time; - if (dict->GetValueForKeyAsInteger("start_time", start_time)) { - client_info.start_time += - std::chrono::nanoseconds(static_cast<size_t>(start_time)); - } else { - LLDB_LOG(GetLog(LLDBLog::Object), - "Cannot determine start-time from client-telemetry entry"); - } + auto start_time = GetAsNanosec(dict, "start_time"); + if (start_time.has_value()) + client_info.start_time += start_time.value(); - int64_t end_time; - if (dict->GetValueForKeyAsInteger("end_time", end_time)) { + auto end_time = GetAsNanosec(dict, "end_time"); + if (end_time.has_value()) { SteadyTimePoint epoch; - client_info.end_time = - epoch + std::chrono::nanoseconds(static_cast<size_t>(end_time)); - } else { - LLDB_LOG(GetLog(LLDBLog::Object), - "Cannot determine end-time from client-telemetry entry"); + client_info.end_time = epoch + end_time.value(); } llvm::StringRef error_msg; `````````` </details> https://github.com/llvm/llvm-project/pull/145954 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits