Skip to content

Commit 3b188f4

Browse files
Copilotxusheng6
authored andcommitted
Add a configurable max number of results for TTD queries (#849)
1 parent e3089a6 commit 3b188f4

File tree

1 file changed

+68
-2
lines changed

1 file changed

+68
-2
lines changed

core/adapters/dbgengttdadapter.cpp

Lines changed: 68 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,26 @@ Ref<Settings> DbgEngTTDAdapterType::RegisterAdapterSettings()
352352
"readOnly" : false,
353353
"uiSelectionAction" : "file"
354354
})");
355+
settings->RegisterSetting("ttd.maxMemoryQueryResults",
356+
R"({
357+
"title" : "Max Memory Query Results",
358+
"type" : "number",
359+
"default" : 100000,
360+
"minValue" : 0,
361+
"maxValue" : 18446744073709551615,
362+
"description" : "Maximum number of results to return from TTD Memory queries. Set to 0 for no limit.",
363+
"readOnly" : false
364+
})");
365+
settings->RegisterSetting("ttd.maxCallsQueryResults",
366+
R"({
367+
"title" : "Max Calls Query Results",
368+
"type" : "number",
369+
"default" : 100000,
370+
"minValue" : 0,
371+
"maxValue" : 18446744073709551615,
372+
"description" : "Maximum number of results to return from TTD Calls queries. Set to 0 for no limit.",
373+
"readOnly" : false
374+
})");
355375

356376
return settings;
357377
}
@@ -678,10 +698,25 @@ bool DbgEngTTDAdapter::ParseTTDMemoryObjects(const std::string& expression, TTDM
678698
ComPtr<IModelObject> memoryObject;
679699
ComPtr<IKeyStore> metadataKeyStore;
680700

701+
// Get the max results setting
702+
auto adapterSettings = GetAdapterSettings();
703+
BNSettingsScope scope = SettingsResourceScope;
704+
auto maxResults = adapterSettings->Get<uint64_t>("ttd.maxMemoryQueryResults", GetData(), &scope);
705+
706+
uint64_t resultCounter = 0;
707+
bool wasLimited = false;
708+
681709
while (SUCCEEDED(iterator->GetNext(&memoryObject, 0, nullptr, &metadataKeyStore)))
682710
{
683711
if (!memoryObject)
684712
break;
713+
714+
// Check if we've reached the limit (0 means no limit)
715+
if (maxResults > 0 && resultCounter >= maxResults)
716+
{
717+
wasLimited = true;
718+
break;
719+
}
685720

686721
TTDMemoryEvent event;
687722

@@ -892,13 +927,21 @@ bool DbgEngTTDAdapter::ParseTTDMemoryObjects(const std::string& expression, TTDM
892927
}
893928

894929
events.push_back(event);
930+
resultCounter++;
895931

896932
// Reset objects for next iteration
897933
memoryObject.Reset();
898934
metadataKeyStore.Reset();
899935
}
900936

901-
LogInfo("Successfully parsed %zu TTD memory events from data model", events.size());
937+
if (wasLimited)
938+
{
939+
LogWarnF("Successfully parsed {} TTD memory events from data model (limited by max results setting of {})", events.size(), maxResults);
940+
}
941+
else
942+
{
943+
LogInfo("Successfully parsed %zu TTD memory events from data model", events.size());
944+
}
902945
return true;
903946
}
904947
catch (const std::exception& e)
@@ -1056,10 +1099,25 @@ bool DbgEngTTDAdapter::ParseTTDCallObjects(const std::string& expression, std::v
10561099
ComPtr<IModelObject> callObject;
10571100
ComPtr<IKeyStore> callMetadataKeyStore;
10581101

1102+
// Get the max results setting
1103+
auto adapterSettings = GetAdapterSettings();
1104+
BNSettingsScope scope = SettingsResourceScope;
1105+
auto maxResults = adapterSettings->Get<uint64_t>("ttd.maxCallsQueryResults", GetData(), &scope);
1106+
1107+
uint64_t resultCounter = 0;
1108+
bool wasLimited = false;
1109+
10591110
while (SUCCEEDED(iterator->GetNext(&callObject, 0, nullptr, &callMetadataKeyStore)))
10601111
{
10611112
if (!callObject)
10621113
break;
1114+
1115+
// Check if we've reached the limit (0 means no limit)
1116+
if (maxResults > 0 && resultCounter >= maxResults)
1117+
{
1118+
wasLimited = true;
1119+
break;
1120+
}
10631121

10641122
TTDCallEvent event;
10651123

@@ -1256,13 +1314,21 @@ bool DbgEngTTDAdapter::ParseTTDCallObjects(const std::string& expression, std::v
12561314
}
12571315

12581316
events.push_back(event);
1317+
resultCounter++;
12591318

12601319
// Reset objects for next iteration
12611320
callObject.Reset();
12621321
callMetadataKeyStore.Reset();
12631322
}
12641323

1265-
LogInfo("Successfully parsed %zu TTD call events from data model", events.size());
1324+
if (wasLimited)
1325+
{
1326+
LogWarnF("Successfully parsed {} TTD call events from data model (limited by max results setting of {})", events.size(), maxResults);
1327+
}
1328+
else
1329+
{
1330+
LogInfo("Successfully parsed %zu TTD call events from data model", events.size());
1331+
}
12661332
return true;
12671333
}
12681334
catch (const std::exception& e)

0 commit comments

Comments
 (0)