https://github.com/oontvoo created https://github.com/llvm/llvm-project/pull/145954
None >From f4092ed5fda4214bfd2c72f288a6c686315bdc3b Mon Sep 17 00:00:00 2001 From: Vy Nguyen <v...@google.com> Date: Thu, 26 Jun 2025 15:18:44 -0400 Subject: [PATCH] [LLDB][NFC] Refactor code extracting timestamp from StructuredData --- lldb/source/Core/Telemetry.cpp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) 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; _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits