mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-11-01 00:20:06 +00:00
Hide RadarProductManager implementation detail by using friend class
This commit is contained in:
parent
c9e312fd54
commit
410eb85d3f
2 changed files with 19 additions and 17 deletions
|
|
@ -24,6 +24,9 @@ namespace manager
|
||||||
static const std::string logPrefix_ =
|
static const std::string logPrefix_ =
|
||||||
"[scwx::qt::manager::radar_product_manager] ";
|
"[scwx::qt::manager::radar_product_manager] ";
|
||||||
|
|
||||||
|
typedef std::function<std::shared_ptr<wsr88d::NexradFile>()>
|
||||||
|
CreateNexradFileFunction;
|
||||||
|
|
||||||
static constexpr uint32_t NUM_RADIAL_GATES_0_5_DEGREE =
|
static constexpr uint32_t NUM_RADIAL_GATES_0_5_DEGREE =
|
||||||
common::MAX_0_5_DEGREE_RADIALS * common::MAX_DATA_MOMENT_GATES;
|
common::MAX_0_5_DEGREE_RADIALS * common::MAX_DATA_MOMENT_GATES;
|
||||||
static constexpr uint32_t NUM_RADIAL_GATES_1_DEGREE =
|
static constexpr uint32_t NUM_RADIAL_GATES_1_DEGREE =
|
||||||
|
|
@ -59,6 +62,10 @@ public:
|
||||||
void
|
void
|
||||||
StoreRadarProductRecord(std::shared_ptr<types::RadarProductRecord> record);
|
StoreRadarProductRecord(std::shared_ptr<types::RadarProductRecord> record);
|
||||||
|
|
||||||
|
static void
|
||||||
|
LoadNexradFile(CreateNexradFileFunction load,
|
||||||
|
std::shared_ptr<request::NexradFileRequest> request);
|
||||||
|
|
||||||
std::string radarId_;
|
std::string radarId_;
|
||||||
bool initialized_;
|
bool initialized_;
|
||||||
|
|
||||||
|
|
@ -70,8 +77,6 @@ public:
|
||||||
std::map<std::chrono::system_clock::time_point,
|
std::map<std::chrono::system_clock::time_point,
|
||||||
std::shared_ptr<wsr88d::Ar2vFile>>
|
std::shared_ptr<wsr88d::Ar2vFile>>
|
||||||
level2VolumeScans_;
|
level2VolumeScans_;
|
||||||
|
|
||||||
std::mutex fileLoadMutex_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
RadarProductManager::RadarProductManager(const std::string& radarId) :
|
RadarProductManager::RadarProductManager(const std::string& radarId) :
|
||||||
|
|
@ -208,21 +213,23 @@ void RadarProductManager::Initialize()
|
||||||
void RadarProductManager::LoadData(
|
void RadarProductManager::LoadData(
|
||||||
std::istream& is, std::shared_ptr<request::NexradFileRequest> request)
|
std::istream& is, std::shared_ptr<request::NexradFileRequest> request)
|
||||||
{
|
{
|
||||||
LoadNexradFile([=, &is]() -> std::shared_ptr<wsr88d::NexradFile>
|
RadarProductManagerImpl::LoadNexradFile(
|
||||||
{ return wsr88d::NexradFileFactory::Create(is); },
|
[=, &is]() -> std::shared_ptr<wsr88d::NexradFile>
|
||||||
request);
|
{ return wsr88d::NexradFileFactory::Create(is); },
|
||||||
|
request);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadarProductManager::LoadFile(
|
void RadarProductManager::LoadFile(
|
||||||
const std::string& filename,
|
const std::string& filename,
|
||||||
std::shared_ptr<request::NexradFileRequest> request)
|
std::shared_ptr<request::NexradFileRequest> request)
|
||||||
{
|
{
|
||||||
LoadNexradFile([=]() -> std::shared_ptr<wsr88d::NexradFile>
|
RadarProductManagerImpl::LoadNexradFile(
|
||||||
{ return wsr88d::NexradFileFactory::Create(filename); },
|
[=]() -> std::shared_ptr<wsr88d::NexradFile>
|
||||||
request);
|
{ return wsr88d::NexradFileFactory::Create(filename); },
|
||||||
|
request);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RadarProductManager::LoadNexradFile(
|
void RadarProductManagerImpl::LoadNexradFile(
|
||||||
CreateNexradFileFunction load,
|
CreateNexradFileFunction load,
|
||||||
std::shared_ptr<request::NexradFileRequest> request)
|
std::shared_ptr<request::NexradFileRequest> request)
|
||||||
{
|
{
|
||||||
|
|
@ -307,7 +314,7 @@ RadarProductManager::GetLevel2Data(wsr88d::rda::DataBlockType dataBlockType,
|
||||||
scwx::util::async(
|
scwx::util::async(
|
||||||
[&]()
|
[&]()
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> guard(p->fileLoadMutex_);
|
std::unique_lock lock(fileLoadMutex_);
|
||||||
|
|
||||||
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Start load";
|
BOOST_LOG_TRIVIAL(debug) << logPrefix_ << "Start load";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,14 +59,9 @@ signals:
|
||||||
void Level2DataLoaded();
|
void Level2DataLoaded();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
typedef std::function<std::shared_ptr<wsr88d::NexradFile>()>
|
|
||||||
CreateNexradFileFunction;
|
|
||||||
|
|
||||||
static void
|
|
||||||
LoadNexradFile(CreateNexradFileFunction load,
|
|
||||||
std::shared_ptr<request::NexradFileRequest> request);
|
|
||||||
|
|
||||||
std::unique_ptr<RadarProductManagerImpl> p;
|
std::unique_ptr<RadarProductManagerImpl> p;
|
||||||
|
|
||||||
|
friend class RadarProductManagerImpl;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace manager
|
} // namespace manager
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue