mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 04:00:04 +00:00
Change the selection of the most recent level 2 scan to avoid certain
improper removal from causing issues.
This commit is contained in:
parent
314d3f5b9b
commit
1f0d2a7a66
1 changed files with 40 additions and 37 deletions
|
|
@ -367,7 +367,6 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
|
||||||
scanPrefix);
|
scanPrefix);
|
||||||
}
|
}
|
||||||
|
|
||||||
int lastScanNumber = -1;
|
|
||||||
// Start with last scan
|
// Start with last scan
|
||||||
int previousScanNumber = scanNumberMap.crbegin()->first;
|
int previousScanNumber = scanNumberMap.crbegin()->first;
|
||||||
const int firstScanNumber = scanNumberMap.cbegin()->first;
|
const int firstScanNumber = scanNumberMap.cbegin()->first;
|
||||||
|
|
@ -375,50 +374,54 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
|
||||||
// Look for a gap in scan numbers. This indicates that is the latest
|
// Look for a gap in scan numbers. This indicates that is the latest
|
||||||
// scan.
|
// scan.
|
||||||
|
|
||||||
// This indicates that highest number scan is the last scan
|
auto possibleLastNumbers = std::unordered_set<int>();
|
||||||
|
// This indicates that highest number scan may be the last scan
|
||||||
// (including if there is only 1 scan)
|
// (including if there is only 1 scan)
|
||||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||||
if (previousScanNumber != 999 || scans.size() == 1)
|
if (previousScanNumber != 999 || firstScanNumber != 1)
|
||||||
{
|
{
|
||||||
lastScanNumber = previousScanNumber;
|
possibleLastNumbers.emplace(previousScanNumber);
|
||||||
}
|
}
|
||||||
else
|
// Have already checked scan with highest number, so skip first
|
||||||
|
previousScanNumber = firstScanNumber;
|
||||||
|
bool first = true;
|
||||||
|
for (const auto& scan : scanNumberMap)
|
||||||
{
|
{
|
||||||
// Have already checked scan with highest number, so skip first
|
if (first)
|
||||||
previousScanNumber = firstScanNumber;
|
|
||||||
bool first = true;
|
|
||||||
for (const auto& scan : scanNumberMap)
|
|
||||||
{
|
{
|
||||||
if (first)
|
first = false;
|
||||||
{
|
continue;
|
||||||
first = false;
|
}
|
||||||
continue;
|
if (scan.first != previousScanNumber + 1)
|
||||||
}
|
{
|
||||||
if (scan.first != previousScanNumber + 1)
|
possibleLastNumbers.emplace(previousScanNumber);
|
||||||
{
|
}
|
||||||
lastScanNumber = previousScanNumber;
|
previousScanNumber = scan.first;
|
||||||
break;
|
}
|
||||||
}
|
|
||||||
previousScanNumber = scan.first;
|
if (possibleLastNumbers.empty())
|
||||||
|
{
|
||||||
|
logger_->warn("Could not find last scan");
|
||||||
|
// TODO make sure this makes sence
|
||||||
|
return {false, 0, 0};
|
||||||
|
}
|
||||||
|
|
||||||
|
int lastScanNumber = -1;
|
||||||
|
std::chrono::system_clock::time_point lastScanTime = {};
|
||||||
|
std::string lastScanPrefix;
|
||||||
|
|
||||||
|
for (const int scanNumber : possibleLastNumbers)
|
||||||
|
{
|
||||||
|
const std::string& scanPrefix = scanNumberMap.at(scanNumber);
|
||||||
|
auto scanTime = GetScanTime(scanPrefix);
|
||||||
|
if (scanTime > lastScanTime)
|
||||||
|
{
|
||||||
|
lastScanTime = scanTime;
|
||||||
|
lastScanPrefix = scanPrefix;
|
||||||
|
lastScanNumber = scanNumber;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastScanNumber == -1)
|
|
||||||
{
|
|
||||||
// 999 is the last scan
|
|
||||||
if (firstScanNumber != 1)
|
|
||||||
{
|
|
||||||
lastScanNumber = previousScanNumber;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
logger_->warn("Could not find last scan");
|
|
||||||
// TODO make sure this makes sence
|
|
||||||
return {false, 0, 0};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const std::string& lastScanPrefix = scanNumberMap.at(lastScanNumber);
|
|
||||||
const int secondLastScanNumber =
|
const int secondLastScanNumber =
|
||||||
// 999 is the last file possible
|
// 999 is the last file possible
|
||||||
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
// NOLINTNEXTLINE(cppcoreguidelines-avoid-magic-numbers)
|
||||||
|
|
@ -452,7 +455,7 @@ AwsLevel2ChunksDataProvider::Impl::ListObjects()
|
||||||
currentScan_.valid_ = true;
|
currentScan_.valid_ = true;
|
||||||
currentScan_.prefix_ = lastScanPrefix;
|
currentScan_.prefix_ = lastScanPrefix;
|
||||||
currentScan_.nexradFile_ = nullptr;
|
currentScan_.nexradFile_ = nullptr;
|
||||||
currentScan_.time_ = GetScanTime(lastScanPrefix);
|
currentScan_.time_ = lastScanTime;
|
||||||
currentScan_.lastModified_ = {};
|
currentScan_.lastModified_ = {};
|
||||||
currentScan_.secondLastModified_ = {};
|
currentScan_.secondLastModified_ = {};
|
||||||
currentScan_.lastKey_ = "";
|
currentScan_.lastKey_ = "";
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue