mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 13:10:05 +00:00
Lock the level 2 product record mutex before searching for records
This commit is contained in:
parent
881502c970
commit
4471843f8b
1 changed files with 20 additions and 15 deletions
|
|
@ -1164,26 +1164,31 @@ RadarProductManagerImpl::GetLevel2ProductRecords(
|
||||||
// Ensure Level 2 product records are updated
|
// Ensure Level 2 product records are updated
|
||||||
PopulateLevel2ProductTimes(time);
|
PopulateLevel2ProductTimes(time);
|
||||||
|
|
||||||
if (!level2ProductRecords_.empty() &&
|
|
||||||
time == std::chrono::system_clock::time_point {})
|
|
||||||
{
|
{
|
||||||
// If a default-initialized time point is given, return the latest record
|
std::shared_lock lock {level2ProductRecordMutex_};
|
||||||
recordPtrs.push_back(&(*level2ProductRecords_.rbegin()));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Get the requested record
|
|
||||||
auto recordIt =
|
|
||||||
scwx::util::GetBoundedElementIterator(level2ProductRecords_, time);
|
|
||||||
|
|
||||||
if (recordIt != level2ProductRecords_.cend())
|
if (!level2ProductRecords_.empty() &&
|
||||||
|
time == std::chrono::system_clock::time_point {})
|
||||||
{
|
{
|
||||||
recordPtrs.push_back(&(*(recordIt)));
|
// If a default-initialized time point is given, return the latest
|
||||||
|
// record
|
||||||
|
recordPtrs.push_back(&(*level2ProductRecords_.rbegin()));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Get the requested record
|
||||||
|
auto recordIt =
|
||||||
|
scwx::util::GetBoundedElementIterator(level2ProductRecords_, time);
|
||||||
|
|
||||||
// The requested time may be in the previous record, so get that too
|
if (recordIt != level2ProductRecords_.cend())
|
||||||
if (recordIt != level2ProductRecords_.cbegin())
|
|
||||||
{
|
{
|
||||||
recordPtrs.push_back(&(*(--recordIt)));
|
recordPtrs.push_back(&(*(recordIt)));
|
||||||
|
|
||||||
|
// The requested time may be in the previous record, so get that too
|
||||||
|
if (recordIt != level2ProductRecords_.cbegin())
|
||||||
|
{
|
||||||
|
recordPtrs.push_back(&(*(--recordIt)));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue