[Lldb-commits] [lldb] [LLDB][NFC] Refactor code extracting timestamp from StructuredData (PR #145954)
via lldb-commits
lldb-commits at lists.llvm.org
Thu Jun 26 12:20:45 PDT 2025
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
More information about the lldb-commits
mailing list