mirror of
https://github.com/ciphervance/supercell-wx.git
synced 2025-10-30 16:00:08 +00:00
Request available level 3 products
This commit is contained in:
parent
d2597354b4
commit
12d8aaf8a6
5 changed files with 51 additions and 0 deletions
|
|
@ -56,6 +56,16 @@ TEST(AwsLevel3DataProvider, Refresh)
|
||||||
EXPECT_EQ(newObjects, totalObjects);
|
EXPECT_EQ(newObjects, totalObjects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(AwsLevel3DataProvider, GetAvailableProducts)
|
||||||
|
{
|
||||||
|
AwsLevel3DataProvider provider("KLSX", "N0B");
|
||||||
|
|
||||||
|
provider.RequestAvailableProducts();
|
||||||
|
auto products = provider.GetAvailableProducts();
|
||||||
|
|
||||||
|
EXPECT_GT(products.size(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
TEST(AwsLevel3DataProvider, TimePointValid)
|
TEST(AwsLevel3DataProvider, TimePointValid)
|
||||||
{
|
{
|
||||||
using namespace std::chrono;
|
using namespace std::chrono;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,9 @@ public:
|
||||||
static std::chrono::system_clock::time_point
|
static std::chrono::system_clock::time_point
|
||||||
GetTimePointFromKey(const std::string& key);
|
GetTimePointFromKey(const std::string& key);
|
||||||
|
|
||||||
|
void RequestAvailableProducts();
|
||||||
|
std::vector<std::string> GetAvailableProducts();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
std::string GetPrefix(std::chrono::system_clock::time_point date);
|
std::string GetPrefix(std::chrono::system_clock::time_point date);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -100,6 +100,19 @@ public:
|
||||||
virtual std::chrono::system_clock::time_point
|
virtual std::chrono::system_clock::time_point
|
||||||
GetTimePointByKey(const std::string& key) const = 0;
|
GetTimePointByKey(const std::string& key) const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Requests available NEXRAD products for the current radar site, and adds
|
||||||
|
* the list to the cache.
|
||||||
|
*/
|
||||||
|
virtual void RequestAvailableProducts();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the list of available NEXRAD products for the current radar site.
|
||||||
|
*
|
||||||
|
* @return Available NEXRAD products
|
||||||
|
*/
|
||||||
|
virtual std::vector<std::string> GetAvailableProducts();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class Impl;
|
class Impl;
|
||||||
std::unique_ptr<Impl> p;
|
std::unique_ptr<Impl> p;
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,24 @@ AwsLevel3DataProvider::GetTimePointFromKey(const std::string& key)
|
||||||
return time;
|
return time;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AwsLevel3DataProvider::RequestAvailableProducts()
|
||||||
|
{
|
||||||
|
p->ListProducts();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<std::string> AwsLevel3DataProvider::GetAvailableProducts()
|
||||||
|
{
|
||||||
|
std::shared_lock readLock(productMutex_);
|
||||||
|
|
||||||
|
auto siteProductMap = productMap_.find(p->radarSite_);
|
||||||
|
if (siteProductMap != productMap_.cend())
|
||||||
|
{
|
||||||
|
return siteProductMap->second;
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
void AwsLevel3DataProvider::Impl::ListProducts()
|
void AwsLevel3DataProvider::Impl::ListProducts()
|
||||||
{
|
{
|
||||||
std::shared_lock readLock(productMutex_);
|
std::shared_lock readLock(productMutex_);
|
||||||
|
|
|
||||||
|
|
@ -22,5 +22,12 @@ NexradDataProvider::NexradDataProvider(NexradDataProvider&&) noexcept = default;
|
||||||
NexradDataProvider&
|
NexradDataProvider&
|
||||||
NexradDataProvider::operator=(NexradDataProvider&&) noexcept = default;
|
NexradDataProvider::operator=(NexradDataProvider&&) noexcept = default;
|
||||||
|
|
||||||
|
void NexradDataProvider::RequestAvailableProducts() {}
|
||||||
|
|
||||||
|
std::vector<std::string> NexradDataProvider::GetAvailableProducts()
|
||||||
|
{
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace provider
|
} // namespace provider
|
||||||
} // namespace scwx
|
} // namespace scwx
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue