#pragma once #include #include #include #include namespace scwx { namespace provider { class AwsLevel2DataProviderImpl; class AwsLevel2DataProvider { public: explicit AwsLevel2DataProvider(const std::string& radarSite); explicit AwsLevel2DataProvider(const std::string& radarSite, const std::string& bucketName, const std::string& region); ~AwsLevel2DataProvider(); AwsLevel2DataProvider(const AwsLevel2DataProvider&) = delete; AwsLevel2DataProvider& operator=(const AwsLevel2DataProvider&) = delete; AwsLevel2DataProvider(AwsLevel2DataProvider&&) noexcept; AwsLevel2DataProvider& operator=(AwsLevel2DataProvider&&) noexcept; size_t cache_size() const; size_t ListObjects(std::chrono::system_clock::time_point date); std::shared_ptr LoadObjectByKey(const std::string& key); void Refresh(); static std::chrono::system_clock::time_point GetTimePointFromKey(const std::string& key); private: std::unique_ptr p; }; } // namespace provider } // namespace scwx