aboutsummaryrefslogtreecommitdiff
path: root/src/db.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/db.h')
-rw-r--r--src/db.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/db.h b/src/db.h
index 4a08bf10a1..798913645f 100644
--- a/src/db.h
+++ b/src/db.h
@@ -50,6 +50,25 @@ public:
~CDBEnv();
void MakeMock();
bool IsMock() { return fMockDb; };
+
+ /*
+ * Verify that database file strFile is OK. If it is not,
+ * call the callback to try to recover.
+ * This must be called BEFORE strFile is opened.
+ * Returns true if strFile is OK.
+ */
+ enum VerifyResult { VERIFY_OK, RECOVER_OK, RECOVER_FAIL };
+ VerifyResult Verify(std::string strFile, bool (*recoverFunc)(CDBEnv& dbenv, std::string strFile));
+ /*
+ * Salvage data from a file that Verify says is bad.
+ * fAggressive sets the DB_AGGRESSIVE flag (see berkeley DB->verify() method documentation).
+ * Appends binary key/value pairs to vResult, returns true if successful.
+ * NOTE: reads the entire database into memory, so cannot be used
+ * for huge databases.
+ */
+ typedef std::pair<std::vector<unsigned char>, std::vector<unsigned char> > KeyValPair;
+ bool Salvage(std::string strFile, bool fAggressive, std::vector<KeyValPair>& vResult);
+
bool Open(boost::filesystem::path pathEnv_);
void Close();
void Flush(bool fShutdown);
@@ -58,6 +77,7 @@ public:
bool GetDetach() { return fDetachDB; }
void CloseDb(const std::string& strFile);
+ bool RemoveDb(const std::string& strFile);
DbTxn *TxnBegin(int flags=DB_TXN_WRITE_NOSYNC)
{