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