mirror of
				https://github.com/ciphervance/supercell-wx.git
				synced 2025-10-31 14:40:05 +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/qt/manager/radar_product_manager.hpp> | ||||||
| #include <scwx/common/constants.hpp> | #include <scwx/common/constants.hpp> | ||||||
|  | #include <scwx/common/sites.hpp> | ||||||
| #include <scwx/qt/config/radar_site.hpp> | #include <scwx/qt/config/radar_site.hpp> | ||||||
| #include <scwx/util/threads.hpp> | #include <scwx/util/threads.hpp> | ||||||
|  | #include <scwx/util/time.hpp> | ||||||
| #include <scwx/wsr88d/nexrad_file_factory.hpp> | #include <scwx/wsr88d/nexrad_file_factory.hpp> | ||||||
| 
 | 
 | ||||||
| #include <deque> | #include <deque> | ||||||
|  | @ -239,14 +241,56 @@ static void LoadNexradFile(CreateNexradFileFunction                    load, | ||||||
|          std::unique_lock                    lock(fileLoadMutex_); |          std::unique_lock                    lock(fileLoadMutex_); | ||||||
|          std::shared_ptr<wsr88d::NexradFile> nexradFile = load(); |          std::shared_ptr<wsr88d::NexradFile> nexradFile = load(); | ||||||
| 
 | 
 | ||||||
|  |          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: Store and index
 | ||||||
|          //       - Should this impact arguments sent back in onComplete?
 |             // TODO: When to initialize?
 | ||||||
|  |          } | ||||||
| 
 | 
 | ||||||
|          lock.unlock(); |          lock.unlock(); | ||||||
| 
 | 
 | ||||||
|          if (request != nullptr) |          if (request != nullptr) | ||||||
|          { |          { | ||||||
|             request->set_nexrad_file(nexradFile); |             request->set_nexrad_file(nexradFile); | ||||||
|  |             request->set_radar_id(radarId); | ||||||
|  |             request->set_site_id(siteId); | ||||||
|  |             request->set_time(time); | ||||||
|             emit request->RequestComplete(request); |             emit request->RequestComplete(request); | ||||||
|          } |          } | ||||||
|       }); |       }); | ||||||
|  |  | ||||||
|  | @ -15,11 +15,17 @@ static const std::string logPrefix_ = | ||||||
| class NexradFileRequestImpl | class NexradFileRequestImpl | ||||||
| { | { | ||||||
| public: | public: | ||||||
|    explicit NexradFileRequestImpl() : nexradFile_ {nullptr} {} |    explicit NexradFileRequestImpl() : | ||||||
|  |        nexradFile_ {nullptr}, radarId_ {}, siteId_ {}, time_ {} | ||||||
|  |    { | ||||||
|  |    } | ||||||
| 
 | 
 | ||||||
|    ~NexradFileRequestImpl() {} |    ~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() : | NexradFileRequest::NexradFileRequest() : | ||||||
|  | @ -33,12 +39,42 @@ std::shared_ptr<wsr88d::NexradFile> NexradFileRequest::nexrad_file() const | ||||||
|    return p->nexradFile_; |    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( | void NexradFileRequest::set_nexrad_file( | ||||||
|    std::shared_ptr<wsr88d::NexradFile> nexradFile) |    std::shared_ptr<wsr88d::NexradFile> nexradFile) | ||||||
| { | { | ||||||
|    p->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 request
 | ||||||
| } // namespace qt
 | } // namespace qt
 | ||||||
| } // namespace scwx
 | } // namespace scwx
 | ||||||
|  |  | ||||||
|  | @ -2,6 +2,7 @@ | ||||||
| 
 | 
 | ||||||
| #include <scwx/wsr88d/nexrad_file.hpp> | #include <scwx/wsr88d/nexrad_file.hpp> | ||||||
| 
 | 
 | ||||||
|  | #include <chrono> | ||||||
| #include <memory> | #include <memory> | ||||||
| 
 | 
 | ||||||
| #include <QObject> | #include <QObject> | ||||||
|  | @ -24,8 +25,14 @@ public: | ||||||
|    ~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_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: | private: | ||||||
|    std::unique_ptr<NexradFileRequestImpl> p; |    std::unique_ptr<NexradFileRequestImpl> p; | ||||||
|  |  | ||||||
|  | @ -87,6 +87,8 @@ bool Level3File::LoadData(std::istream& is) | ||||||
|          << logPrefix_ << "Date/Time: " << p->wmoHeader_->date_time(); |          << logPrefix_ << "Date/Time: " << p->wmoHeader_->date_time(); | ||||||
|       BOOST_LOG_TRIVIAL(debug) |       BOOST_LOG_TRIVIAL(debug) | ||||||
|          << logPrefix_ << "Category:  " << p->wmoHeader_->product_category(); |          << logPrefix_ << "Category:  " << p->wmoHeader_->product_category(); | ||||||
|  |       BOOST_LOG_TRIVIAL(debug) | ||||||
|  |          << logPrefix_ << "Site ID:   " << p->wmoHeader_->product_designator(); | ||||||
| 
 | 
 | ||||||
|       // If the header is compressed
 |       // If the header is compressed
 | ||||||
|       if (is.peek() == 0x78) |       if (is.peek() == 0x78) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dan Paulat
						Dan Paulat