use lambda instead of inner class for name assignment functions
Change-Id: Icebc0df03aad489a945365b829338d9dc2879fdd
diff --git a/src/name-assignments/assignment-hash.cpp b/src/name-assignments/assignment-hash.cpp
index 4849324..ebcf6d0 100644
--- a/src/name-assignments/assignment-hash.cpp
+++ b/src/name-assignments/assignment-hash.cpp
@@ -31,40 +31,32 @@
if (startIndex != factoryParam.size()) {
paramList.push_back(factoryParam.substr(startIndex));
}
- return HashAssignmentFunc(paramList);
-}
+ return [paramList](const std::vector<std::tuple<std::string, std::string>> params){
+ if (params.size() > paramList.size() * 8) { // might be attack
+ BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
+ }
+ std::map<std::string, std::string> paramMap;
+ for (const auto& param : params) {
+ paramMap[std::get<0>(param)] = std::get<1>(param);
+ }
-AssignmentHash::HashAssignmentFunc::HashAssignmentFunc(std::list<std::string> paramList)
- : m_paramList(std::move(paramList))
-{}
+ //construct name
+ PartialName name;
+ for (const auto& field : paramList) {
+ auto it = paramMap.find(field);
+ if (it == paramMap.end()) {
+ return std::vector<PartialName>();
+ } else {
+ name.append(it->second);
+ }
+ }
+ std::vector<PartialName> nameList;
+ util::Sha256 digest;
+ digest << name.wireEncode();
+ nameList.emplace_back(digest.toString());
-std::vector<PartialName>
-AssignmentHash::HashAssignmentFunc::operator() (const std::vector<std::tuple<std::string, std::string>> params)
-{
- if (params.size() > m_paramList.size() * 8) { // might be attack
- BOOST_THROW_EXCEPTION(std::runtime_error("Too many extra parameters given"));
- }
- std::map<std::string, std::string> paramMap;
- for (const auto& param : params) {
- paramMap[std::get<0>(param)] = std::get<1>(param);
- }
-
- //construct name
- PartialName name;
- for (const auto& field : m_paramList) {
- auto it = paramMap.find(field);
- if (it == paramMap.end()) {
- return std::vector<PartialName>();
- } else {
- name.append(it->second);
- }
- }
- std::vector<PartialName> nameList;
- util::Sha256 digest;
- digest << name.wireEncode();
- nameList.emplace_back(digest.toString());
-
- return nameList;
+ return nameList;
+ };
}
}