|
|
@ -186,7 +186,7 @@ bool CCacheKeyIterator::next(valtype& key, CKevaData& data) |
|
|
|
/* ************************************************************************** */ |
|
|
|
/* ************************************************************************** */ |
|
|
|
/* CKevaCache. */ |
|
|
|
/* CKevaCache. */ |
|
|
|
|
|
|
|
|
|
|
|
const std::string CKevaCache::associatePrefix = "_A_"; |
|
|
|
const std::string CKevaCache::associatePrefix = "_f:"; |
|
|
|
|
|
|
|
|
|
|
|
bool |
|
|
|
bool |
|
|
|
CKevaCache::get(const valtype& nameSpace, const valtype& key, CKevaData& data) const |
|
|
|
CKevaCache::get(const valtype& nameSpace, const valtype& key, CKevaData& data) const |
|
|
@ -215,6 +215,8 @@ void |
|
|
|
CKevaCache::set(const valtype& nameSpace, const valtype& key, const CKevaData& data) |
|
|
|
CKevaCache::set(const valtype& nameSpace, const valtype& key, const CKevaData& data) |
|
|
|
{ |
|
|
|
{ |
|
|
|
auto name = std::make_tuple(nameSpace, key); |
|
|
|
auto name = std::make_tuple(nameSpace, key); |
|
|
|
|
|
|
|
printf("set name is: %s\n", (EncodeBase58Check(nameSpace) + ValtypeToString(key)).c_str()); |
|
|
|
|
|
|
|
printf("set, this is: %p, data value is: %s\n", this, ValtypeToString(data.getValue()).c_str()); |
|
|
|
const std::set<NamespaceKeyType>::iterator di = deleted.find(name); |
|
|
|
const std::set<NamespaceKeyType>::iterator di = deleted.find(name); |
|
|
|
if (di != deleted.end()) { |
|
|
|
if (di != deleted.end()) { |
|
|
|
deleted.erase(di); |
|
|
|
deleted.erase(di); |
|
|
@ -255,25 +257,39 @@ CKevaCache::getAssociateNamespaces(const valtype& value, valtype& nameSpace) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
CKevaCache::associateNamespaces(const valtype& nameSpace, const valtype& nameSpaceOther) |
|
|
|
CKevaCache::associateNamespaces(const valtype& nameSpace, const valtype& nameSpaceOther, const CKevaData& data) |
|
|
|
{ |
|
|
|
{ |
|
|
|
auto name = std::make_tuple(nameSpaceOther, nameSpace); |
|
|
|
auto name = std::make_tuple(nameSpaceOther, nameSpace); |
|
|
|
|
|
|
|
printf("associateNamespaces, name is: %s\n", (EncodeBase58Check(nameSpaceOther) + EncodeBase58Check(nameSpace)).c_str()); |
|
|
|
|
|
|
|
printf("associateNamespaces, this is: %p, data value is: %s\n", this, ValtypeToString(data.getValue()).c_str()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const std::set<NamespaceKeyType>::iterator di = disassociations.find(name); |
|
|
|
|
|
|
|
if (di != disassociations.end()) { |
|
|
|
|
|
|
|
disassociations.erase(di); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const NamespaceMap::iterator ei = associations.find(name); |
|
|
|
const NamespaceMap::iterator ei = associations.find(name); |
|
|
|
CKevaData data; |
|
|
|
if (ei != associations.end()) { |
|
|
|
if (ei != entries.end()) |
|
|
|
printf("CKevaCache::associateNamespaces, REPLACE !!!\n"); |
|
|
|
ei->second = data; |
|
|
|
ei->second = data; |
|
|
|
else |
|
|
|
} else { |
|
|
|
|
|
|
|
printf("CKevaCache::associateNamespaces, INSERT !!!\n"); |
|
|
|
associations.insert(std::make_pair(name, data)); |
|
|
|
associations.insert(std::make_pair(name, data)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void |
|
|
|
void |
|
|
|
CKevaCache::disassociateNamespaces(const valtype& nameSpace, const valtype& nameSpaceOther) |
|
|
|
CKevaCache::disassociateNamespaces(const valtype& nameSpace, const valtype& nameSpaceOther) |
|
|
|
{ |
|
|
|
{ |
|
|
|
auto name = std::make_tuple(nameSpaceOther, nameSpace); |
|
|
|
auto name = std::make_tuple(nameSpaceOther, nameSpace); |
|
|
|
const NamespaceMap::iterator ei = entries.find(name); |
|
|
|
const NamespaceMap::iterator ei = associations.find(name); |
|
|
|
if (ei != entries.end()) { |
|
|
|
printf("CKevaCache::disassociateNamespaces, name is: %s\n", (EncodeBase58Check(nameSpaceOther) + EncodeBase58Check(nameSpace)).c_str()); |
|
|
|
|
|
|
|
if (ei != associations.end()) { |
|
|
|
|
|
|
|
printf("CKevaCache::disassociateNamespaces, erase!!!\n"); |
|
|
|
associations.erase(ei); |
|
|
|
associations.erase(ei); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
disassociations.insert(name); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CKevaIterator* |
|
|
|
CKevaIterator* |
|
|
@ -298,15 +314,20 @@ CKevaCache::updateNamesForHeight (unsigned nHeight, |
|
|
|
|
|
|
|
|
|
|
|
void CKevaCache::apply(const CKevaCache& cache) |
|
|
|
void CKevaCache::apply(const CKevaCache& cache) |
|
|
|
{ |
|
|
|
{ |
|
|
|
|
|
|
|
printf("CKevaCache::apply!!!!\n"); |
|
|
|
for (EntryMap::const_iterator i = cache.entries.begin(); i != cache.entries.end(); ++i) { |
|
|
|
for (EntryMap::const_iterator i = cache.entries.begin(); i != cache.entries.end(); ++i) { |
|
|
|
set(std::get<0>(i->first), std::get<1>(i->first), i->second); |
|
|
|
set(std::get<0>(i->first), std::get<1>(i->first), i->second); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (NamespaceMap::const_iterator i = associations.begin(); i != associations.end(); ++i) { |
|
|
|
for (NamespaceMap::const_iterator i = associations.begin(); i != associations.end(); ++i) { |
|
|
|
set(std::get<0>(i->first), std::get<1>(i->first), i->second); |
|
|
|
associateNamespaces(std::get<0>(i->first), std::get<1>(i->first), i->second); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
for (std::set<NamespaceKeyType>::const_iterator i = cache.deleted.begin(); i != cache.deleted.end(); ++i) { |
|
|
|
for (std::set<NamespaceKeyType>::const_iterator i = cache.deleted.begin(); i != cache.deleted.end(); ++i) { |
|
|
|
remove(std::get<0>(*i), std::get<1>(*i)); |
|
|
|
remove(std::get<0>(*i), std::get<1>(*i)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
for (std::set<NamespaceKeyType>::const_iterator i = cache.disassociations.begin(); i != cache.disassociations.end(); ++i) { |
|
|
|
|
|
|
|
disassociateNamespaces(std::get<0>(*i), std::get<1>(*i)); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|