From 497745ad31c90545b288e2845049e0ce474bcbe2 Mon Sep 17 00:00:00 2001 From: gcontini <1121667+gcontini@users.noreply.github.com> Date: 周六, 19 10月 2019 10:10:45 +0800 Subject: [PATCH] Merge branch 'feature/code_review_and_refactor' into develop --- src/library/locate/LocatorStrategy.hpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 60 insertions(+), 0 deletions(-) diff --git a/src/library/locate/LocatorStrategy.hpp b/src/library/locate/LocatorStrategy.hpp new file mode 100644 index 0000000..278c6a3 --- /dev/null +++ b/src/library/locate/LocatorStrategy.hpp @@ -0,0 +1,60 @@ +#ifndef RETRIEVER_H_ +#define RETRIEVER_H_ + +#include <memory> +#include <cstddef> +#include <string> +#include <vector> + +#include "../base/EventRegistry.h" + +namespace license { +namespace locate { +/** + * This class provides a common interface to find and retrieve + * licenses from different sources and positions. + * + * Usage: + * <ol> + * <li> call licenseLocations to get a list of available locations (the returned format is defined by the class, it's usually the file name)</li> + * <li> iterate over the returned vector and call retrieveLicense to get the content of the license</li> + * </ol> + */ +class LocatorStrategy { +protected: + const std::string m_strategy_name; + inline LocatorStrategy(const std::string &strategyName) : + m_strategy_name(strategyName) { + } +public: + + virtual const std::string get_strategy_name() const { + return m_strategy_name; + } + /** + * Try to find licenses + * @param eventRegistry + * @return + * A list of identifiers for call retrieve_license_content. + */ + virtual const std::vector<std::string> license_locations( + EventRegistry &eventRegistry) = 0; + + /** + * Default implementation is to retrieve the license from file. + * Subclasses may override it. + * @param licenseLocationId + * String that identifies the license. It is usually the file name + * but can be whatever is understood by the class + * @return + * a string containing the license data in INI format. + */ + virtual const std::string retrieve_license_content( + const std::string &licenseLocationId) const; + inline virtual ~LocatorStrategy() { + } +}; + +} +} +#endif -- Gitblit v1.9.1