Request available level 3 products

This commit is contained in:
Dan Paulat 2022-06-26 07:57:28 -05:00
parent d2597354b4
commit 12d8aaf8a6
5 changed files with 51 additions and 0 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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_);

View file

@ -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