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