From 936078888db0780f880828b0a5336a3332b1b824 Mon Sep 17 00:00:00 2001 From: jl777 Date: Tue, 12 Jun 2018 00:04:00 -1100 Subject: [PATCH] int32_t CBlockTreeDB::SnapShot() --- src/txdb.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/txdb.cpp b/src/txdb.cpp index c856947ad..0d802345a 100644 --- a/src/txdb.cpp +++ b/src/txdb.cpp @@ -396,6 +396,43 @@ bool CBlockTreeDB::ReadAddressIndex(uint160 addressHash, int type, return true; } +int32_t CBlockTreeDB::SnapShot() +{ + char chType; int32_t num = 0; std::string address; + boost::scoped_ptr pcursor(NewIterator()); + while (pcursor->Valid()) + { + boost::this_thread::interruption_point(); + try + { + leveldb::Slice slKey = pcursor->key(); + CDataStream ssKey(slKey.data(), slKey.data()+slKey.size(), SER_DISK, CLIENT_VERSION); + CAddressIndexKey indexKey; + ssKey >> chType; + ssKey >> indexKey; + if ( chType == DB_ADDRESSINDEX ) + { + try { + leveldb::Slice slValue = pcursor->value(); + CDataStream ssValue(slValue.data(), slValue.data()+slValue.size(), SER_DISK, CLIENT_VERSION); + CAmount nValue; + ssValue >> nValue; + getAddressFromIndex(indexKey.type, indexKey.addressBytes, address); + fprintf(stderr,"{\"%s\", %.8f},\n",address.c_str(),(double)nValue/COIN); + num++; + //addressIndex.push_back(make_pair(indexKey, nValue)); + pcursor->Next(); + } catch (const std::exception& e) { + return error("failed to get address index value"); + } + } else break; + } catch (const std::exception& e) { + break; + } + } + return(num); +} + bool CBlockTreeDB::WriteTimestampIndex(const CTimestampIndexKey ×tampIndex) { CLevelDBBatch batch; batch.Write(make_pair(DB_TIMESTAMPINDEX, timestampIndex), 0);