Author: Vy Nguyen
Date: 2025-06-30T14:25:11-04:00
New Revision: 5548f4d5ef6ab7192fe454a497af6f2cfe403339

URL: 
https://github.com/llvm/llvm-project/commit/5548f4d5ef6ab7192fe454a497af6f2cfe403339
DIFF: 
https://github.com/llvm/llvm-project/commit/5548f4d5ef6ab7192fe454a497af6f2cfe403339.diff

LOG: [LLDB][NFC] Refactor code extracting timestamp from StructuredData 
(#145954)

Co-authored-by: Alex Langford <nirvashtz...@gmail.com>

Added: 
    

Modified: 
    lldb/source/Core/Telemetry.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Core/Telemetry.cpp b/lldb/source/Core/Telemetry.cpp
index 6434b11a63ad4..2f2e1c1d56d52 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,12 @@ 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");
-  }
+  if (auto maybe_start_time = GetAsNanosec(dict, "start_time"))
+    client_info.start_time += *maybe_start_time;
 
-  int64_t end_time;
-  if (dict->GetValueForKeyAsInteger("end_time", end_time)) {
+  if (auto maybe_end_time = GetAsNanosec(dict, "end_time")) {
     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 + *maybe_end_time;
   }
 
   llvm::StringRef error_msg;


        
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to