mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 00:00:04 +00:00 
			
		
		
		
	Add file request data
This commit is contained in:
		
							parent
							
								
									883626ebf5
								
							
						
					
					
						commit
						505b424de4
					
				
					 4 changed files with 94 additions and 5 deletions
				
			
		|  | @ -1,7 +1,9 @@ | |||
| #include <scwx/qt/manager/radar_product_manager.hpp> | ||||
| #include <scwx/common/constants.hpp> | ||||
| #include <scwx/common/sites.hpp> | ||||
| #include <scwx/qt/config/radar_site.hpp> | ||||
| #include <scwx/util/threads.hpp> | ||||
| #include <scwx/util/time.hpp> | ||||
| #include <scwx/wsr88d/nexrad_file_factory.hpp> | ||||
| 
 | ||||
| #include <deque> | ||||
|  | @ -239,14 +241,56 @@ static void LoadNexradFile(CreateNexradFileFunction                    load, | |||
|          std::unique_lock                    lock(fileLoadMutex_); | ||||
|          std::shared_ptr<wsr88d::NexradFile> nexradFile = load(); | ||||
| 
 | ||||
|          // TODO: Store and index
 | ||||
|          //       - Should this impact arguments sent back in onComplete?
 | ||||
|          std::shared_ptr<wsr88d::Ar2vFile> level2File = | ||||
|             std::dynamic_pointer_cast<wsr88d::Ar2vFile>(nexradFile); | ||||
|          std::shared_ptr<wsr88d::Level3File> level3File = | ||||
|             std::dynamic_pointer_cast<wsr88d::Level3File>(nexradFile); | ||||
| 
 | ||||
|          bool        fileValid    = false; | ||||
|          std::string radarId      = "????"; | ||||
|          std::string siteId       = "???"; | ||||
|          uint16_t    julianDate   = 0; | ||||
|          uint32_t    milliseconds = 0; | ||||
| 
 | ||||
|          std::chrono::system_clock::time_point time; | ||||
| 
 | ||||
|          if (level2File != nullptr) | ||||
|          { | ||||
|             fileValid    = true; | ||||
|             radarId      = level2File->icao(); | ||||
|             siteId       = common::GetSiteId(radarId); | ||||
|             julianDate   = level2File->julian_date(); | ||||
|             milliseconds = level2File->milliseconds(); | ||||
|          } | ||||
|          else if (level3File != nullptr) | ||||
|          { | ||||
|             fileValid  = true; | ||||
|             siteId     = level3File->wmo_header()->product_designator(); | ||||
|             radarId    = config::GetRadarIdFromSiteId(siteId); | ||||
|             julianDate = level3File->message()->header().date_of_message(); | ||||
|             milliseconds = | ||||
|                level3File->message()->header().time_of_message() * 1000u; | ||||
|          } | ||||
| 
 | ||||
|          if (fileValid) | ||||
|          { | ||||
|             time = util::TimePoint(julianDate, milliseconds); | ||||
| 
 | ||||
|             std::shared_ptr<RadarProductManager> manager = | ||||
|                RadarProductManager::Instance(radarId); | ||||
| 
 | ||||
|             // TODO: Store and index
 | ||||
|             // TODO: When to initialize?
 | ||||
|          } | ||||
| 
 | ||||
|          lock.unlock(); | ||||
| 
 | ||||
|          if (request != nullptr) | ||||
|          { | ||||
|             request->set_nexrad_file(nexradFile); | ||||
|             request->set_radar_id(radarId); | ||||
|             request->set_site_id(siteId); | ||||
|             request->set_time(time); | ||||
|             emit request->RequestComplete(request); | ||||
|          } | ||||
|       }); | ||||
|  |  | |||
|  | @ -15,11 +15,17 @@ static const std::string logPrefix_ = | |||
| class NexradFileRequestImpl | ||||
| { | ||||
| public: | ||||
|    explicit NexradFileRequestImpl() : nexradFile_ {nullptr} {} | ||||
|    explicit NexradFileRequestImpl() : | ||||
|        nexradFile_ {nullptr}, radarId_ {}, siteId_ {}, time_ {} | ||||
|    { | ||||
|    } | ||||
| 
 | ||||
|    ~NexradFileRequestImpl() {} | ||||
| 
 | ||||
|    std::shared_ptr<wsr88d::NexradFile> nexradFile_; | ||||
|    std::shared_ptr<wsr88d::NexradFile>   nexradFile_; | ||||
|    std::string                           radarId_; | ||||
|    std::string                           siteId_; | ||||
|    std::chrono::system_clock::time_point time_; | ||||
| }; | ||||
| 
 | ||||
| NexradFileRequest::NexradFileRequest() : | ||||
|  | @ -33,12 +39,42 @@ std::shared_ptr<wsr88d::NexradFile> NexradFileRequest::nexrad_file() const | |||
|    return p->nexradFile_; | ||||
| } | ||||
| 
 | ||||
| std::string NexradFileRequest::radar_id() const | ||||
| { | ||||
|    return p->radarId_; | ||||
| } | ||||
| 
 | ||||
| std::string NexradFileRequest::site_id() const | ||||
| { | ||||
|    return p->siteId_; | ||||
| } | ||||
| 
 | ||||
| std::chrono::system_clock::time_point NexradFileRequest::time() const | ||||
| { | ||||
|    return p->time_; | ||||
| } | ||||
| 
 | ||||
| void NexradFileRequest::set_nexrad_file( | ||||
|    std::shared_ptr<wsr88d::NexradFile> nexradFile) | ||||
| { | ||||
|    p->nexradFile_ = nexradFile; | ||||
| } | ||||
| 
 | ||||
| void NexradFileRequest::set_radar_id(const std::string& radarId) | ||||
| { | ||||
|    p->radarId_ = radarId; | ||||
| } | ||||
| 
 | ||||
| void NexradFileRequest::set_site_id(const std::string& siteId) | ||||
| { | ||||
|    p->siteId_ = siteId; | ||||
| } | ||||
| 
 | ||||
| void NexradFileRequest::set_time(std::chrono::system_clock::time_point time) | ||||
| { | ||||
|    p->time_ = time; | ||||
| } | ||||
| 
 | ||||
| } // namespace request
 | ||||
| } // namespace qt
 | ||||
| } // namespace scwx
 | ||||
|  |  | |||
|  | @ -2,6 +2,7 @@ | |||
| 
 | ||||
| #include <scwx/wsr88d/nexrad_file.hpp> | ||||
| 
 | ||||
| #include <chrono> | ||||
| #include <memory> | ||||
| 
 | ||||
| #include <QObject> | ||||
|  | @ -23,9 +24,15 @@ public: | |||
|    explicit NexradFileRequest(); | ||||
|    ~NexradFileRequest(); | ||||
| 
 | ||||
|    std::shared_ptr<wsr88d::NexradFile> nexrad_file() const; | ||||
|    std::shared_ptr<wsr88d::NexradFile>   nexrad_file() const; | ||||
|    std::string                           radar_id() const; | ||||
|    std::string                           site_id() const; | ||||
|    std::chrono::system_clock::time_point time() const; | ||||
| 
 | ||||
|    void set_nexrad_file(std::shared_ptr<wsr88d::NexradFile> nexradFile); | ||||
|    void set_radar_id(const std::string& radarId); | ||||
|    void set_site_id(const std::string& siteId); | ||||
|    void set_time(std::chrono::system_clock::time_point time); | ||||
| 
 | ||||
| private: | ||||
|    std::unique_ptr<NexradFileRequestImpl> p; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat