mirror of
https://github.com/Xahau/xahaud.git
synced 2025-11-19 10:05:48 +00:00
dont send 0 ranges
This commit is contained in:
@@ -74,7 +74,7 @@ struct ServerInfoHeader
|
|||||||
uint8_t ledger_hash[32]; // Latest ledger hash
|
uint8_t ledger_hash[32]; // Latest ledger hash
|
||||||
uint8_t node_public_key[32]; // Node's public key
|
uint8_t node_public_key[32]; // Node's public key
|
||||||
uint32_t warning_flags; // Bitfield of active warnings
|
uint32_t warning_flags; // Bitfield of active warnings
|
||||||
uint32_t complete_ledger_count; // Number of range entries that follow
|
uint32_t ledger_range_count; // Number of range entries that follow
|
||||||
|
|
||||||
// System metrics
|
// System metrics
|
||||||
uint64_t process_memory_pages; // Process memory usage in pages
|
uint64_t process_memory_pages; // Process memory usage in pages
|
||||||
@@ -344,10 +344,17 @@ private:
|
|||||||
auto currentMetrics = collectSystemMetrics();
|
auto currentMetrics = collectSystemMetrics();
|
||||||
metrics_tracker_.addSample(currentMetrics);
|
metrics_tracker_.addSample(currentMetrics);
|
||||||
|
|
||||||
// Count the intervals and calculate total size needed
|
// Count only non-zero intervals and calculate total size needed
|
||||||
size_t rangeCount = rangeSet.size();
|
size_t validRangeCount = 0;
|
||||||
size_t totalSize =
|
for (auto const& interval : rangeSet) {
|
||||||
sizeof(ServerInfoHeader) + (rangeCount * sizeof(LgrRange));
|
// Skip intervals where both lower and upper are 0
|
||||||
|
if (interval.lower() != 0 || interval.upper() != 0) {
|
||||||
|
validRangeCount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t totalSize = sizeof(ServerInfoHeader) + (validRangeCount * sizeof(LgrRange));
|
||||||
|
|
||||||
|
|
||||||
// Allocate buffer and initialize header
|
// Allocate buffer and initialize header
|
||||||
std::vector<uint8_t> buffer(totalSize);
|
std::vector<uint8_t> buffer(totalSize);
|
||||||
@@ -495,18 +502,19 @@ private:
|
|||||||
std::memcpy(header->node_public_key, nodeKey.data(), 32);
|
std::memcpy(header->node_public_key, nodeKey.data(), 32);
|
||||||
|
|
||||||
// Set the complete ledger count
|
// Set the complete ledger count
|
||||||
header->complete_ledger_count = rangeCount;
|
header->ledger_range_count = validRangeCount;
|
||||||
|
|
||||||
// Append the ranges after the header
|
// Append only non-zero ranges after the header
|
||||||
auto* rangeData = reinterpret_cast<LgrRange*>(
|
auto* rangeData = reinterpret_cast<LgrRange*>(buffer.data() + sizeof(ServerInfoHeader));
|
||||||
buffer.data() + sizeof(ServerInfoHeader));
|
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
for (auto const& interval : rangeSet)
|
for (auto const& interval : rangeSet) {
|
||||||
{
|
// Only pack non-zero ranges
|
||||||
|
if (interval.lower() != 0 || interval.upper() != 0) {
|
||||||
rangeData[i].start = interval.lower();
|
rangeData[i].start = interval.lower();
|
||||||
rangeData[i].end = interval.upper();
|
rangeData[i].end = interval.upper();
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return buffer;
|
return buffer;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user