1515#include < memenv.h>
1616#include < stdint.h>
1717
18- void HandleError (const leveldb::Status& status) throw(dbwrapper_error)
19- {
20- if (status.ok ())
21- return ;
22- LogPrintf (" %s\n " , status.ToString ());
23- if (status.IsCorruption ())
24- throw dbwrapper_error (" Database corrupted" );
25- if (status.IsIOError ())
26- throw dbwrapper_error (" Database I/O error" );
27- if (status.IsNotFound ())
28- throw dbwrapper_error (" Database entry missing" );
29- throw dbwrapper_error (" Unknown database error" );
30- }
31-
3218static leveldb::Options GetOptions (size_t nCacheSize)
3319{
3420 leveldb::Options options;
@@ -61,13 +47,13 @@ CDBWrapper::CDBWrapper(const boost::filesystem::path& path, size_t nCacheSize, b
6147 if (fWipe ) {
6248 LogPrintf (" Wiping LevelDB in %s\n " , path.string ());
6349 leveldb::Status result = leveldb::DestroyDB (path.string (), options);
64- HandleError (result);
50+ dbwrapper_private:: HandleError (result);
6551 }
6652 TryCreateDirectory (path);
6753 LogPrintf (" Opening LevelDB in %s\n " , path.string ());
6854 }
6955 leveldb::Status status = leveldb::DB::Open (options, path.string (), &pdb);
70- HandleError (status);
56+ dbwrapper_private:: HandleError (status);
7157 LogPrintf (" Opened LevelDB successfully\n " );
7258
7359 // The base-case obfuscation key, which is a noop.
@@ -84,10 +70,10 @@ CDBWrapper::CDBWrapper(const boost::filesystem::path& path, size_t nCacheSize, b
8470 Write (OBFUSCATE_KEY_KEY, new_key);
8571 obfuscate_key = new_key;
8672
87- LogPrintf (" Wrote new obfuscate key for %s: %s\n " , path.string (), GetObfuscateKeyHex ( ));
73+ LogPrintf (" Wrote new obfuscate key for %s: %s\n " , path.string (), HexStr (obfuscate_key ));
8874 }
8975
90- LogPrintf (" Using obfuscation key for %s: %s\n " , path.string (), GetObfuscateKeyHex ( ));
76+ LogPrintf (" Using obfuscation key for %s: %s\n " , path.string (), HexStr (obfuscate_key ));
9177}
9278
9379CDBWrapper::~CDBWrapper ()
@@ -102,10 +88,10 @@ CDBWrapper::~CDBWrapper()
10288 options.env = NULL ;
10389}
10490
105- bool CDBWrapper::WriteBatch (CDBBatch& batch, bool fSync ) throw(dbwrapper_error)
91+ bool CDBWrapper::WriteBatch (CDBBatch& batch, bool fSync )
10692{
10793 leveldb::Status status = pdb->Write (fSync ? syncoptions : writeoptions, &batch.batch );
108- HandleError (status);
94+ dbwrapper_private:: HandleError (status);
10995 return true ;
11096}
11197
@@ -136,17 +122,30 @@ bool CDBWrapper::IsEmpty()
136122 return !(it->Valid ());
137123}
138124
139- const std::vector<unsigned char >& CDBWrapper::GetObfuscateKey () const
125+ CDBIterator::~CDBIterator () { delete piter; }
126+ bool CDBIterator::Valid () { return piter->Valid (); }
127+ void CDBIterator::SeekToFirst () { piter->SeekToFirst (); }
128+ void CDBIterator::Next () { piter->Next (); }
129+
130+ namespace dbwrapper_private {
131+
132+ void HandleError (const leveldb::Status& status)
140133{
141- return obfuscate_key;
134+ if (status.ok ())
135+ return ;
136+ LogPrintf (" %s\n " , status.ToString ());
137+ if (status.IsCorruption ())
138+ throw dbwrapper_error (" Database corrupted" );
139+ if (status.IsIOError ())
140+ throw dbwrapper_error (" Database I/O error" );
141+ if (status.IsNotFound ())
142+ throw dbwrapper_error (" Database entry missing" );
143+ throw dbwrapper_error (" Unknown database error" );
142144}
143145
144- std::string CDBWrapper::GetObfuscateKeyHex () const
146+ const std::vector< unsigned char >& GetObfuscateKey ( const CDBWrapper &w)
145147{
146- return HexStr ( obfuscate_key) ;
148+ return w. obfuscate_key ;
147149}
148150
149- CDBIterator::~CDBIterator () { delete piter; }
150- bool CDBIterator::Valid () { return piter->Valid (); }
151- void CDBIterator::SeekToFirst () { piter->SeekToFirst (); }
152- void CDBIterator::Next () { piter->Next (); }
151+ };
0 commit comments