mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 18:40:05 +00:00
Don't attempt to load an object that hasn't been listed yet by the provider
- Fixes issue when switching to a new product, product does not display the first time
This commit is contained in:
parent
7d74a0e312
commit
ea1569cb76
2 changed files with 18 additions and 9 deletions
|
|
@ -792,7 +792,16 @@ void RadarProductManagerImpl::LoadProviderData(
|
||||||
if (existingRecord == nullptr)
|
if (existingRecord == nullptr)
|
||||||
{
|
{
|
||||||
std::string key = providerManager->provider_->FindKey(time);
|
std::string key = providerManager->provider_->FindKey(time);
|
||||||
nexradFile = providerManager->provider_->LoadObjectByKey(key);
|
|
||||||
|
if (!key.empty())
|
||||||
|
{
|
||||||
|
nexradFile = providerManager->provider_->LoadObjectByKey(key);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logger_->warn("Attempting to load object without key: {}",
|
||||||
|
scwx::util::TimeString(time));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -1042,7 +1051,7 @@ RadarProductManagerImpl::GetLevel2ProductRecord(
|
||||||
record = recordPtr->second.lock();
|
record = recordPtr->second.lock();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (record == nullptr &&
|
if (recordPtr != nullptr && record == nullptr &&
|
||||||
recordTime != std::chrono::system_clock::time_point {})
|
recordTime != std::chrono::system_clock::time_point {})
|
||||||
{
|
{
|
||||||
// Product is expired, reload it
|
// Product is expired, reload it
|
||||||
|
|
@ -1107,7 +1116,7 @@ RadarProductManagerImpl::GetLevel3ProductRecord(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (record == nullptr &&
|
if (recordPtr != nullptr && record == nullptr &&
|
||||||
recordTime != std::chrono::system_clock::time_point {})
|
recordTime != std::chrono::system_clock::time_point {})
|
||||||
{
|
{
|
||||||
// Product is expired, reload it
|
// Product is expired, reload it
|
||||||
|
|
|
||||||
|
|
@ -176,28 +176,28 @@ bool WmoHeader::Parse(std::istream& is)
|
||||||
|
|
||||||
if (wmoTokenList.size() < 3 || wmoTokenList.size() > 4)
|
if (wmoTokenList.size() < 3 || wmoTokenList.size() > 4)
|
||||||
{
|
{
|
||||||
logger_->debug("Invalid number of WMO tokens");
|
logger_->warn("Invalid number of WMO tokens");
|
||||||
headerValid = false;
|
headerValid = false;
|
||||||
}
|
}
|
||||||
else if (wmoTokenList[0].size() != 6)
|
else if (wmoTokenList[0].size() != 6)
|
||||||
{
|
{
|
||||||
logger_->debug("WMO identifier malformed");
|
logger_->warn("WMO identifier malformed");
|
||||||
headerValid = false;
|
headerValid = false;
|
||||||
}
|
}
|
||||||
else if (wmoTokenList[1].size() != 4)
|
else if (wmoTokenList[1].size() != 4)
|
||||||
{
|
{
|
||||||
logger_->debug("ICAO malformed");
|
logger_->warn("ICAO malformed");
|
||||||
headerValid = false;
|
headerValid = false;
|
||||||
}
|
}
|
||||||
else if (wmoTokenList[2].size() != 6)
|
else if (wmoTokenList[2].size() != 6)
|
||||||
{
|
{
|
||||||
logger_->debug("Date/time malformed");
|
logger_->warn("Date/time malformed");
|
||||||
headerValid = false;
|
headerValid = false;
|
||||||
}
|
}
|
||||||
else if (wmoTokenList.size() == 4 && wmoTokenList[3].size() != 3)
|
else if (wmoTokenList.size() == 4 && wmoTokenList[3].size() != 3)
|
||||||
{
|
{
|
||||||
// BBB indicator is optional
|
// BBB indicator is optional
|
||||||
logger_->debug("BBB indicator malformed");
|
logger_->warn("BBB indicator malformed");
|
||||||
headerValid = false;
|
headerValid = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
@ -226,7 +226,7 @@ bool WmoHeader::Parse(std::istream& is)
|
||||||
{
|
{
|
||||||
if (awipsLine.size() != 6)
|
if (awipsLine.size() != 6)
|
||||||
{
|
{
|
||||||
logger_->debug("AWIPS Identifier Line bad size");
|
logger_->warn("AWIPS Identifier Line bad size");
|
||||||
headerValid = false;
|
headerValid = false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue