mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 16:30:05 +00:00
Add current radar site to NexradFileRequest in the event there is no radar site in the Archive II file
This commit is contained in:
parent
1259cba811
commit
9071c4751e
6 changed files with 85 additions and 65 deletions
|
|
@ -430,8 +430,12 @@ void MainWindow::on_actionOpenNexrad_triggered()
|
|||
{
|
||||
logger_->info("Selected: {}", file.toStdString());
|
||||
|
||||
auto radarSite = p->activeMap_->GetRadarSite();
|
||||
std::string currentRadarSite =
|
||||
(radarSite != nullptr) ? radarSite->id() : std::string {};
|
||||
|
||||
std::shared_ptr<request::NexradFileRequest> request =
|
||||
std::make_shared<request::NexradFileRequest>();
|
||||
std::make_shared<request::NexradFileRequest>(currentRadarSite);
|
||||
|
||||
connect( //
|
||||
request.get(),
|
||||
|
|
|
|||
|
|
@ -207,16 +207,18 @@ public:
|
|||
void UpdateRecentRecords(RadarProductRecordList& recentList,
|
||||
std::shared_ptr<types::RadarProductRecord> record);
|
||||
|
||||
void LoadNexradFileAsync(CreateNexradFileFunction load,
|
||||
std::shared_ptr<request::NexradFileRequest> request,
|
||||
void LoadNexradFileAsync(
|
||||
CreateNexradFileFunction load,
|
||||
const std::shared_ptr<request::NexradFileRequest>& request,
|
||||
std::mutex& mutex,
|
||||
std::chrono::system_clock::time_point time);
|
||||
void LoadProviderData(std::chrono::system_clock::time_point time,
|
||||
void
|
||||
LoadProviderData(std::chrono::system_clock::time_point time,
|
||||
std::shared_ptr<ProviderManager> providerManager,
|
||||
RadarProductRecordMap& recordMap,
|
||||
std::shared_mutex& recordMutex,
|
||||
std::mutex& loadDataMutex,
|
||||
std::shared_ptr<request::NexradFileRequest> request);
|
||||
const std::shared_ptr<request::NexradFileRequest>& request);
|
||||
void PopulateLevel2ProductTimes(std::chrono::system_clock::time_point time);
|
||||
void PopulateLevel3ProductTimes(const std::string& product,
|
||||
std::chrono::system_clock::time_point time);
|
||||
|
|
@ -229,10 +231,9 @@ public:
|
|||
|
||||
static void
|
||||
LoadNexradFile(CreateNexradFileFunction load,
|
||||
std::shared_ptr<request::NexradFileRequest> request,
|
||||
const std::shared_ptr<request::NexradFileRequest>& request,
|
||||
std::mutex& mutex,
|
||||
std::chrono::system_clock::time_point time = {},
|
||||
const std::string& radarId = {});
|
||||
std::chrono::system_clock::time_point time = {});
|
||||
|
||||
const std::string radarId_;
|
||||
bool initialized_;
|
||||
|
|
@ -395,6 +396,11 @@ float RadarProductManager::gate_size() const
|
|||
return (p->radarSite_->type() == "tdwr") ? 150.0f : 250.0f;
|
||||
}
|
||||
|
||||
std::string RadarProductManager::radar_id() const
|
||||
{
|
||||
return p->radarId_;
|
||||
}
|
||||
|
||||
std::shared_ptr<config::RadarSite> RadarProductManager::radar_site() const
|
||||
{
|
||||
return p->radarSite_;
|
||||
|
|
@ -783,7 +789,7 @@ void RadarProductManagerImpl::LoadProviderData(
|
|||
RadarProductRecordMap& recordMap,
|
||||
std::shared_mutex& recordMutex,
|
||||
std::mutex& loadDataMutex,
|
||||
std::shared_ptr<request::NexradFileRequest> request)
|
||||
const std::shared_ptr<request::NexradFileRequest>& request)
|
||||
{
|
||||
logger_->debug("LoadProviderData: {}, {}",
|
||||
providerManager->name(),
|
||||
|
|
@ -839,7 +845,7 @@ void RadarProductManagerImpl::LoadProviderData(
|
|||
|
||||
void RadarProductManager::LoadLevel2Data(
|
||||
std::chrono::system_clock::time_point time,
|
||||
std::shared_ptr<request::NexradFileRequest> request)
|
||||
const std::shared_ptr<request::NexradFileRequest>& request)
|
||||
{
|
||||
logger_->debug("LoadLevel2Data: {}", scwx::util::TimeString(time));
|
||||
|
||||
|
|
@ -854,7 +860,7 @@ void RadarProductManager::LoadLevel2Data(
|
|||
void RadarProductManager::LoadLevel3Data(
|
||||
const std::string& product,
|
||||
std::chrono::system_clock::time_point time,
|
||||
std::shared_ptr<request::NexradFileRequest> request)
|
||||
const std::shared_ptr<request::NexradFileRequest>& request)
|
||||
{
|
||||
logger_->debug("LoadLevel3Data: {}", scwx::util::TimeString(time));
|
||||
|
||||
|
|
@ -884,7 +890,7 @@ void RadarProductManager::LoadLevel3Data(
|
|||
}
|
||||
|
||||
void RadarProductManager::LoadData(
|
||||
std::istream& is, std::shared_ptr<request::NexradFileRequest> request)
|
||||
std::istream& is, const std::shared_ptr<request::NexradFileRequest>& request)
|
||||
{
|
||||
logger_->debug("LoadData()");
|
||||
|
||||
|
|
@ -901,7 +907,7 @@ void RadarProductManager::LoadData(
|
|||
|
||||
void RadarProductManager::LoadFile(
|
||||
const std::string& filename,
|
||||
std::shared_ptr<request::NexradFileRequest> request)
|
||||
const std::shared_ptr<request::NexradFileRequest>& request)
|
||||
{
|
||||
logger_->debug("LoadFile: {}", filename);
|
||||
|
||||
|
|
@ -952,21 +958,20 @@ void RadarProductManager::LoadFile(
|
|||
|
||||
void RadarProductManagerImpl::LoadNexradFileAsync(
|
||||
CreateNexradFileFunction load,
|
||||
std::shared_ptr<request::NexradFileRequest> request,
|
||||
const std::shared_ptr<request::NexradFileRequest>& request,
|
||||
std::mutex& mutex,
|
||||
std::chrono::system_clock::time_point time)
|
||||
{
|
||||
boost::asio::post(threadPool_,
|
||||
[=, this, &mutex]()
|
||||
{ LoadNexradFile(load, request, mutex, time, radarId_); });
|
||||
[=, &mutex]()
|
||||
{ LoadNexradFile(load, request, mutex, time); });
|
||||
}
|
||||
|
||||
void RadarProductManagerImpl::LoadNexradFile(
|
||||
CreateNexradFileFunction load,
|
||||
std::shared_ptr<request::NexradFileRequest> request,
|
||||
const std::shared_ptr<request::NexradFileRequest>& request,
|
||||
std::mutex& mutex,
|
||||
std::chrono::system_clock::time_point time,
|
||||
const std::string& radarId)
|
||||
std::chrono::system_clock::time_point time)
|
||||
{
|
||||
std::unique_lock lock {mutex};
|
||||
|
||||
|
|
@ -992,7 +997,7 @@ void RadarProductManagerImpl::LoadNexradFile(
|
|||
std::string recordRadarId = (record->radar_id());
|
||||
if (recordRadarId.empty())
|
||||
{
|
||||
recordRadarId = radarId;
|
||||
recordRadarId = request->current_radar_site();
|
||||
}
|
||||
|
||||
std::shared_ptr<RadarProductManager> manager =
|
||||
|
|
@ -1127,7 +1132,7 @@ RadarProductManagerImpl::GetLevel2ProductRecord(
|
|||
{
|
||||
// Product is expired, reload it
|
||||
std::shared_ptr<request::NexradFileRequest> request =
|
||||
std::make_shared<request::NexradFileRequest>();
|
||||
std::make_shared<request::NexradFileRequest>(radarId_);
|
||||
|
||||
QObject::connect(
|
||||
request.get(),
|
||||
|
|
@ -1192,7 +1197,7 @@ RadarProductManagerImpl::GetLevel3ProductRecord(
|
|||
{
|
||||
// Product is expired, reload it
|
||||
std::shared_ptr<request::NexradFileRequest> request =
|
||||
std::make_shared<request::NexradFileRequest>();
|
||||
std::make_shared<request::NexradFileRequest>(radarId_);
|
||||
|
||||
QObject::connect(
|
||||
request.get(),
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ public:
|
|||
|
||||
const std::vector<float>& coordinates(common::RadialSize radialSize) const;
|
||||
float gate_size() const;
|
||||
std::string radar_id() const;
|
||||
std::shared_ptr<config::RadarSite> radar_site() const;
|
||||
|
||||
void Initialize();
|
||||
|
|
@ -111,18 +112,18 @@ public:
|
|||
|
||||
void LoadLevel2Data(
|
||||
std::chrono::system_clock::time_point time,
|
||||
std::shared_ptr<request::NexradFileRequest> request = nullptr);
|
||||
const std::shared_ptr<request::NexradFileRequest>& request = nullptr);
|
||||
void LoadLevel3Data(
|
||||
const std::string& product,
|
||||
std::chrono::system_clock::time_point time,
|
||||
std::shared_ptr<request::NexradFileRequest> request = nullptr);
|
||||
const std::shared_ptr<request::NexradFileRequest>& request = nullptr);
|
||||
|
||||
static void
|
||||
LoadData(std::istream& is,
|
||||
std::shared_ptr<request::NexradFileRequest> request = nullptr);
|
||||
static void
|
||||
LoadFile(const std::string& filename,
|
||||
std::shared_ptr<request::NexradFileRequest> request = nullptr);
|
||||
static void LoadData(
|
||||
std::istream& is,
|
||||
const std::shared_ptr<request::NexradFileRequest>& request = nullptr);
|
||||
static void LoadFile(
|
||||
const std::string& filename,
|
||||
const std::shared_ptr<request::NexradFileRequest>& request = nullptr);
|
||||
|
||||
common::Level3ProductCategoryMap GetAvailableLevel3Categories();
|
||||
std::vector<std::string> GetLevel3Products();
|
||||
|
|
|
|||
|
|
@ -1332,7 +1332,8 @@ void MapWidgetImpl::RadarProductManagerConnect()
|
|||
{
|
||||
// Create file request
|
||||
std::shared_ptr<request::NexradFileRequest> request =
|
||||
std::make_shared<request::NexradFileRequest>();
|
||||
std::make_shared<request::NexradFileRequest>(
|
||||
radarProductManager_->radar_id());
|
||||
|
||||
// File request callback
|
||||
if (autoUpdateEnabled_)
|
||||
|
|
|
|||
|
|
@ -9,22 +9,31 @@ namespace request
|
|||
|
||||
static const std::string logPrefix_ = "scwx::qt::request::nexrad_file_request";
|
||||
|
||||
class NexradFileRequestImpl
|
||||
class NexradFileRequest::Impl
|
||||
{
|
||||
public:
|
||||
explicit NexradFileRequestImpl() : radarProductRecord_ {nullptr} {}
|
||||
explicit Impl(const std::string& currentRadarSite) :
|
||||
currentRadarSite_ {currentRadarSite}
|
||||
{
|
||||
}
|
||||
~Impl() = default;
|
||||
|
||||
~NexradFileRequestImpl() {}
|
||||
const std::string currentRadarSite_;
|
||||
|
||||
std::shared_ptr<types::RadarProductRecord> radarProductRecord_;
|
||||
std::shared_ptr<types::RadarProductRecord> radarProductRecord_ {nullptr};
|
||||
};
|
||||
|
||||
NexradFileRequest::NexradFileRequest() :
|
||||
p(std::make_unique<NexradFileRequestImpl>())
|
||||
NexradFileRequest::NexradFileRequest(const std::string& currentRadarSite) :
|
||||
p(std::make_unique<Impl>(currentRadarSite))
|
||||
{
|
||||
}
|
||||
NexradFileRequest::~NexradFileRequest() = default;
|
||||
|
||||
std::string NexradFileRequest::current_radar_site() const
|
||||
{
|
||||
return p->currentRadarSite_;
|
||||
}
|
||||
|
||||
std::shared_ptr<types::RadarProductRecord>
|
||||
NexradFileRequest::radar_product_record() const
|
||||
{
|
||||
|
|
@ -32,7 +41,7 @@ NexradFileRequest::radar_product_record() const
|
|||
}
|
||||
|
||||
void NexradFileRequest::set_radar_product_record(
|
||||
std::shared_ptr<types::RadarProductRecord> record)
|
||||
const std::shared_ptr<types::RadarProductRecord>& record)
|
||||
{
|
||||
p->radarProductRecord_ = record;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,23 +13,23 @@ namespace qt
|
|||
namespace request
|
||||
{
|
||||
|
||||
class NexradFileRequestImpl;
|
||||
|
||||
class NexradFileRequest : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit NexradFileRequest();
|
||||
explicit NexradFileRequest(const std::string& currentRadarSite = {});
|
||||
~NexradFileRequest();
|
||||
|
||||
std::string current_radar_site() const;
|
||||
std::shared_ptr<types::RadarProductRecord> radar_product_record() const;
|
||||
|
||||
void
|
||||
set_radar_product_record(std::shared_ptr<types::RadarProductRecord> record);
|
||||
void set_radar_product_record(
|
||||
const std::shared_ptr<types::RadarProductRecord>& record);
|
||||
|
||||
private:
|
||||
std::unique_ptr<NexradFileRequestImpl> p;
|
||||
class Impl;
|
||||
std::unique_ptr<Impl> p;
|
||||
|
||||
signals:
|
||||
void RequestComplete(std::shared_ptr<NexradFileRequest> request);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue