mgmt: tables.cs_unsolicited_policy config option
This commit introduces tests/check-typeid.hpp which provides
unit testing tools to validate runtime type information.
refs #2181
Change-Id: I987c9875517001ea82878cbe2646839a03ad54f3
diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp
index ae4369e..7fad250 100644
--- a/daemon/fw/forwarder.cpp
+++ b/daemon/fw/forwarder.cpp
@@ -36,7 +36,7 @@
NFD_LOG_INIT("Forwarder");
Forwarder::Forwarder()
- : m_unsolicitedDataPolicy(new fw::AdmitLocalUnsolicitedDataPolicy())
+ : m_unsolicitedDataPolicy(new fw::DefaultUnsolicitedDataPolicy())
, m_fib(m_nameTree)
, m_pit(m_nameTree)
, m_measurements(m_nameTree)
diff --git a/daemon/fw/unsolicited-data-policy.cpp b/daemon/fw/unsolicited-data-policy.cpp
index 79c6d77..67d4d37 100644
--- a/daemon/fw/unsolicited-data-policy.cpp
+++ b/daemon/fw/unsolicited-data-policy.cpp
@@ -70,5 +70,24 @@
return UnsolicitedDataDecision::CACHE;
}
+unique_ptr<UnsolicitedDataPolicy>
+makeUnsolicitedDataPolicy(const std::string& key)
+{
+ /// \todo register policy with a macro
+ if (key == "drop-all") {
+ return make_unique<DropAllUnsolicitedDataPolicy>();
+ }
+ if (key == "admit-local") {
+ return make_unique<AdmitLocalUnsolicitedDataPolicy>();
+ }
+ if (key == "admit-network") {
+ return make_unique<AdmitNetworkUnsolicitedDataPolicy>();
+ }
+ if (key == "admit-all") {
+ return make_unique<AdmitAllUnsolicitedDataPolicy>();
+ }
+ return nullptr;
+}
+
} // namespace fw
} // namespace nfd
diff --git a/daemon/fw/unsolicited-data-policy.hpp b/daemon/fw/unsolicited-data-policy.hpp
index 2cbad2a..06354d0 100644
--- a/daemon/fw/unsolicited-data-policy.hpp
+++ b/daemon/fw/unsolicited-data-policy.hpp
@@ -92,6 +92,15 @@
decide(const Face& inFace, const Data& data) const final;
};
+/** \return an UnsolicitedDataPolicy identified by \p key, or nullptr if \p key is unknown
+ */
+unique_ptr<UnsolicitedDataPolicy>
+makeUnsolicitedDataPolicy(const std::string& key);
+
+/** \brief the default UnsolicitedDataPolicy
+ */
+typedef AdmitLocalUnsolicitedDataPolicy DefaultUnsolicitedDataPolicy;
+
} // namespace fw
} // namespace nfd