Migrate to C++17 and refactor
Change-Id: I53407266939258990a1c3a9363c3ebe9ea113fd2
diff --git a/src/redirection/redirection-email.cpp b/src/redirection/redirection-email.cpp
index 863eb91..c13ad91 100644
--- a/src/redirection/redirection-email.cpp
+++ b/src/redirection/redirection-email.cpp
@@ -19,16 +19,16 @@
*/
#include "redirection-email.hpp"
+
#include <boost/algorithm/string.hpp>
namespace ndncert {
-NDNCERT_REGISTER_POLICY_FACTORY(RedirectionEmail, "email");
+NDNCERT_REGISTER_REDIRECTION_POLICY(RedirectionEmail, "email");
RedirectionEmail::RedirectionEmail(const std::string& format)
- : RedirectionPolicy(format)
+ : m_domain(format)
{
- m_domain = format;
}
bool
diff --git a/src/redirection/redirection-email.hpp b/src/redirection/redirection-email.hpp
index 9a338ef..9a8c403 100644
--- a/src/redirection/redirection-email.hpp
+++ b/src/redirection/redirection-email.hpp
@@ -25,13 +25,11 @@
namespace ndncert {
-/**
- * assign names base on client probe parameter
- */
class RedirectionEmail : public RedirectionPolicy
{
public:
- explicit RedirectionEmail(const std::string& format = "");
+ explicit
+ RedirectionEmail(const std::string& format = "");
bool
isRedirecting(const std::multimap<std::string, std::string>& params) override;
diff --git a/src/redirection/redirection-param.cpp b/src/redirection/redirection-param.cpp
index d74d105..1ce9517 100644
--- a/src/redirection/redirection-param.cpp
+++ b/src/redirection/redirection-param.cpp
@@ -19,18 +19,19 @@
*/
#include "redirection-param.hpp"
+
#include <boost/algorithm/string.hpp>
namespace ndncert {
-NDNCERT_REGISTER_POLICY_FACTORY(RedirectionParam, "param");
+NDNCERT_REGISTER_REDIRECTION_POLICY(RedirectionParam, "param");
RedirectionParam::RedirectionParam(const std::string& format)
- : RedirectionPolicy(format)
{
if (format.empty()) {
return;
}
+
std::vector<std::string> strs;
boost::split(strs,format,boost::is_any_of("&"));
for (const auto& s : strs) {
@@ -47,7 +48,7 @@
{
for (const auto& p : m_format) {
bool found = false;
- for (auto it = params.find(p.first); it != params.end() && it->first == p.first; it ++) {
+ for (auto it = params.find(p.first); it != params.end() && it->first == p.first; ++it) {
if (it->second == p.second) {
found = true;
break;
diff --git a/src/redirection/redirection-param.hpp b/src/redirection/redirection-param.hpp
index d067a1f..270fb3d 100644
--- a/src/redirection/redirection-param.hpp
+++ b/src/redirection/redirection-param.hpp
@@ -25,13 +25,11 @@
namespace ndncert {
-/**
- * assign names base on client probe parameter
- */
class RedirectionParam : public RedirectionPolicy
{
public:
- explicit RedirectionParam(const std::string& format = "");
+ explicit
+ RedirectionParam(const std::string& format = "");
bool
isRedirecting(const std::multimap<std::string, std::string>& params) override;
diff --git a/src/redirection/redirection-policy.cpp b/src/redirection/redirection-policy.cpp
index 88aef3e..9ecda9a 100644
--- a/src/redirection/redirection-policy.cpp
+++ b/src/redirection/redirection-policy.cpp
@@ -25,7 +25,7 @@
std::unique_ptr<RedirectionPolicy>
RedirectionPolicy::createPolicyFunc(const std::string& policyType, const std::string& format)
{
- PolicyFactory& factory = getFactory();
+ auto& factory = getFactory();
auto i = factory.find(policyType);
return i == factory.end() ? nullptr : i->second(format);
}
diff --git a/src/redirection/redirection-policy.hpp b/src/redirection/redirection-policy.hpp
index cba0cd8..9e55467 100644
--- a/src/redirection/redirection-policy.hpp
+++ b/src/redirection/redirection-policy.hpp
@@ -29,11 +29,9 @@
class RedirectionPolicy : boost::noncopyable
{
-protected:
- explicit RedirectionPolicy(const std::string& format = "") {}
-
public:
- virtual ~RedirectionPolicy() = default;
+ virtual
+ ~RedirectionPolicy() = default;
/**
* @brief The Redirection Policy provided by the CA operator to decide if redirection is suitable.
@@ -45,37 +43,37 @@
virtual bool
isRedirecting(const std::multimap<std::string, std::string>& params) = 0;
-public:
- template <class PolicyType>
+public: // factory
+ template<class PolicyType>
static void
- registerRedirectionPolicy(const std::string& typeName)
+ registerRedirectionPolicy(const std::string& type)
{
PolicyFactory& factory = getFactory();
- BOOST_ASSERT(factory.count(typeName) == 0);
- factory[typeName] = [](const std::string& format) { return std::make_unique<PolicyType>(format); };
+ BOOST_ASSERT(factory.count(type) == 0);
+ factory[type] = [] (const std::string& format) { return std::make_unique<PolicyType>(format); };
}
static std::unique_ptr<RedirectionPolicy>
createPolicyFunc(const std::string& policyType, const std::string& format = "");
private:
- typedef std::function<std::unique_ptr<RedirectionPolicy>(const std::string&)> FactoryCreateFunc;
- typedef std::map<std::string, FactoryCreateFunc> PolicyFactory;
+ using CreateFunc = std::function<std::unique_ptr<RedirectionPolicy>(const std::string &)>;
+ using PolicyFactory = std::map<std::string, CreateFunc>;
static PolicyFactory&
getFactory();
};
-#define NDNCERT_REGISTER_POLICY_FACTORY(C, T) \
- static class NdnCert##C##PolicyFactoryRegistrationClass \
- { \
- public: \
- NdnCert##C##PolicyFactoryRegistrationClass() \
- { \
- ::ndncert::RedirectionPolicy::registerRedirectionPolicy<C>(T); \
- } \
- } g_NdnCert##C##RedirectionPolicyRegistrationVariable
-
} // namespace ndncert
+#define NDNCERT_REGISTER_REDIRECTION_POLICY(C, T) \
+static class NdnCert##C##RedirectionPolicyRegistrationClass \
+{ \
+public: \
+ NdnCert##C##RedirectionPolicyRegistrationClass() \
+ { \
+ ::ndncert::RedirectionPolicy::registerRedirectionPolicy<C>(T); \
+ } \
+} g_NdnCert##C##RedirectionPolicyRegistrationVariable
+
#endif // NDNCERT_REDIRECTION_POLICY_HPP