mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 04:30:05 +00:00 
			
		
		
		
	Slight rework to nexrad data provider interface
This commit is contained in:
		
							parent
							
								
									4ddff43813
								
							
						
					
					
						commit
						f0ef6b35dd
					
				
					 4 changed files with 56 additions and 10 deletions
				
			
		|  | @ -769,9 +769,7 @@ void RadarProductManagerImpl::RefreshDataSync( | |||
| 
 | ||||
|    if (totalObjects > 0) | ||||
|    { | ||||
|       std::string key = providerManager->provider_->FindLatestKey(); | ||||
|       auto latestTime = providerManager->provider_->GetTimePointByKey(key); | ||||
| 
 | ||||
|       auto latestTime        = providerManager->provider_->FindLatestTime(); | ||||
|       auto updatePeriod      = providerManager->provider_->update_period(); | ||||
|       auto lastModified      = providerManager->provider_->last_modified(); | ||||
|       auto sinceLastModified = std::chrono::system_clock::now() - lastModified; | ||||
|  | @ -951,13 +949,8 @@ void RadarProductManagerImpl::LoadProviderData( | |||
| 
 | ||||
|          if (existingRecord == nullptr) | ||||
|          { | ||||
|             std::string key = providerManager->provider_->FindKey(time); | ||||
| 
 | ||||
|             if (!key.empty()) | ||||
|             { | ||||
|                nexradFile = providerManager->provider_->LoadObjectByKey(key); | ||||
|             } | ||||
|             else | ||||
|             nexradFile = providerManager->provider_->LoadObjectByTime(time); | ||||
|             if (nexradFile == nullptr) | ||||
|             { | ||||
|                logger_->warn("Attempting to load object without key: {}", | ||||
|                              scwx::util::TimeString(time)); | ||||
|  |  | |||
|  | @ -39,12 +39,16 @@ public: | |||
| 
 | ||||
|    std::string FindKey(std::chrono::system_clock::time_point time) override; | ||||
|    std::string FindLatestKey() override; | ||||
|    std::chrono::system_clock::time_point FindLatestTime() override; | ||||
|    std::vector<std::chrono::system_clock::time_point> | ||||
|    GetTimePointsByDate(std::chrono::system_clock::time_point date) override; | ||||
|    std::tuple<bool, size_t, size_t> | ||||
|    ListObjects(std::chrono::system_clock::time_point date) override; | ||||
|    std::shared_ptr<wsr88d::NexradFile> | ||||
|                              LoadObjectByKey(const std::string& key) override; | ||||
|    std::shared_ptr<wsr88d::NexradFile> | ||||
|    LoadObjectByTime(std::chrono::system_clock::time_point time) override; | ||||
|    std::shared_ptr<wsr88d::NexradFile> LoadLatestObject() override; | ||||
|    std::pair<size_t, size_t> Refresh() override; | ||||
| 
 | ||||
| protected: | ||||
|  |  | |||
|  | @ -59,6 +59,13 @@ public: | |||
|     */ | ||||
|    virtual std::string FindLatestKey() = 0; | ||||
| 
 | ||||
|    /**
 | ||||
|     * Finds the most recent time in the cache. | ||||
|     * | ||||
|     * @return NEXRAD data key | ||||
|     */ | ||||
|    virtual std::chrono::system_clock::time_point FindLatestTime() = 0; | ||||
| 
 | ||||
|    /**
 | ||||
|     * Lists NEXRAD objects for the date supplied, and adds them to the cache. | ||||
|     * | ||||
|  | @ -81,6 +88,24 @@ public: | |||
|    virtual std::shared_ptr<wsr88d::NexradFile> | ||||
|    LoadObjectByKey(const std::string& key) = 0; | ||||
| 
 | ||||
|    /**
 | ||||
|     * Loads a NEXRAD file object at the given time | ||||
|     * | ||||
|     * @param time NEXRAD time | ||||
|     * | ||||
|     * @return NEXRAD data | ||||
|     */ | ||||
|    virtual std::shared_ptr<wsr88d::NexradFile> | ||||
|    LoadObjectByTime(std::chrono::system_clock::time_point time) = 0; | ||||
| 
 | ||||
|    /**
 | ||||
|     * Loads the latest NEXRAD file object | ||||
|     * | ||||
|     * @return NEXRAD data | ||||
|     */ | ||||
|    virtual std::shared_ptr<wsr88d::NexradFile> | ||||
|    LoadLatestObject() = 0; | ||||
| 
 | ||||
|    /**
 | ||||
|     * Lists NEXRAD objects for the current date, and adds them to the cache. If | ||||
|     * no objects have been added to the cache for the current date, the previous | ||||
|  |  | |||
|  | @ -170,6 +170,11 @@ std::string AwsNexradDataProvider::FindLatestKey() | |||
|    return key; | ||||
| } | ||||
| 
 | ||||
| std::chrono::system_clock::time_point AwsNexradDataProvider::FindLatestTime() | ||||
| { | ||||
|    return GetTimePointByKey(FindLatestKey()); | ||||
| } | ||||
| 
 | ||||
| std::vector<std::chrono::system_clock::time_point> | ||||
| AwsNexradDataProvider::GetTimePointsByDate( | ||||
|    std::chrono::system_clock::time_point date) | ||||
|  | @ -327,6 +332,25 @@ AwsNexradDataProvider::LoadObjectByKey(const std::string& key) | |||
|    return nexradFile; | ||||
| } | ||||
| 
 | ||||
| std::shared_ptr<wsr88d::NexradFile> AwsNexradDataProvider::LoadObjectByTime( | ||||
|    std::chrono::system_clock::time_point time) | ||||
| { | ||||
|    const std::string key = FindKey(time); | ||||
|    if (key.empty()) | ||||
|    { | ||||
|       return nullptr; | ||||
|    } | ||||
|    else | ||||
|    { | ||||
|       return LoadObjectByKey(key); | ||||
|    } | ||||
| } | ||||
| 
 | ||||
| std::shared_ptr<wsr88d::NexradFile> AwsNexradDataProvider::LoadLatestObject() | ||||
| { | ||||
|    return LoadObjectByKey(FindLatestKey()); | ||||
| } | ||||
| 
 | ||||
| std::pair<size_t, size_t> AwsNexradDataProvider::Refresh() | ||||
| { | ||||
|    using namespace std::chrono; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 AdenKoperczak
						AdenKoperczak