mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 06:10:04 +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,9 +792,18 @@ void RadarProductManagerImpl::LoadProviderData( | ||||||
|          if (existingRecord == nullptr) |          if (existingRecord == nullptr) | ||||||
|          { |          { | ||||||
|             std::string key = providerManager->provider_->FindKey(time); |             std::string key = providerManager->provider_->FindKey(time); | ||||||
|  | 
 | ||||||
|  |             if (!key.empty()) | ||||||
|  |             { | ||||||
|                nexradFile = providerManager->provider_->LoadObjectByKey(key); |                nexradFile = providerManager->provider_->LoadObjectByKey(key); | ||||||
|             } |             } | ||||||
|             else |             else | ||||||
|  |             { | ||||||
|  |                logger_->warn("Attempting to load object without key: {}", | ||||||
|  |                              scwx::util::TimeString(time)); | ||||||
|  |             } | ||||||
|  |          } | ||||||
|  |          else | ||||||
|          { |          { | ||||||
|             nexradFile = existingRecord->nexrad_file(); |             nexradFile = existingRecord->nexrad_file(); | ||||||
|          } |          } | ||||||
|  | @ -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
	
	 Dan Paulat
						Dan Paulat