@@ -172,7 +172,7 @@ class BerkeleyDatabase
172172};
173173
174174/* * RAII class that provides access to a Berkeley database */
175- class BerkeleyBatch
175+ class BerkeleyBatch : public DatabaseBatch
176176{
177177 /* * RAII class that automatically cleanses its data on destruction */
178178 class SafeDbt final
@@ -195,10 +195,10 @@ class BerkeleyBatch
195195 };
196196
197197private:
198- bool ReadKey (CDataStream&& key, CDataStream& value);
199- bool WriteKey (CDataStream&& key, CDataStream&& value, bool overwrite = true );
200- bool EraseKey (CDataStream&& key);
201- bool HasKey (CDataStream&& key);
198+ bool ReadKey (CDataStream&& key, CDataStream& value) override ;
199+ bool WriteKey (CDataStream&& key, CDataStream&& value, bool overwrite = true ) override ;
200+ bool EraseKey (CDataStream&& key) override ;
201+ bool HasKey (CDataStream&& key) override ;
202202
203203protected:
204204 Db* pdb;
@@ -211,71 +211,20 @@ class BerkeleyBatch
211211
212212public:
213213 explicit BerkeleyBatch (BerkeleyDatabase& database, const char * pszMode = " r+" , bool fFlushOnCloseIn =true );
214- ~BerkeleyBatch () { Close (); }
214+ ~BerkeleyBatch () override { Close (); }
215215
216216 BerkeleyBatch (const BerkeleyBatch&) = delete ;
217217 BerkeleyBatch& operator =(const BerkeleyBatch&) = delete ;
218218
219- void Flush ();
220- void Close ();
221-
222- template <typename K, typename T>
223- bool Read (const K& key, T& value)
224- {
225- CDataStream ssKey (SER_DISK, CLIENT_VERSION);
226- ssKey.reserve (1000 );
227- ssKey << key;
228-
229- CDataStream ssValue (SER_DISK, CLIENT_VERSION);
230- if (!ReadKey (std::move (ssKey), ssValue)) return false ;
231- try {
232- ssValue >> value;
233- return true ;
234- } catch (const std::exception&) {
235- return false ;
236- }
237- }
238-
239- template <typename K, typename T>
240- bool Write (const K& key, const T& value, bool fOverwrite = true )
241- {
242- CDataStream ssKey (SER_DISK, CLIENT_VERSION);
243- ssKey.reserve (1000 );
244- ssKey << key;
245-
246- CDataStream ssValue (SER_DISK, CLIENT_VERSION);
247- ssValue.reserve (10000 );
248- ssValue << value;
249-
250- return WriteKey (std::move (ssKey), std::move (ssValue), fOverwrite );
251- }
252-
253- template <typename K>
254- bool Erase (const K& key)
255- {
256- CDataStream ssKey (SER_DISK, CLIENT_VERSION);
257- ssKey.reserve (1000 );
258- ssKey << key;
259-
260- return EraseKey (std::move (ssKey));
261- }
262-
263- template <typename K>
264- bool Exists (const K& key)
265- {
266- CDataStream ssKey (SER_DISK, CLIENT_VERSION);
267- ssKey.reserve (1000 );
268- ssKey << key;
269-
270- return HasKey (std::move (ssKey));
271- }
219+ void Flush () override ;
220+ void Close () override ;
272221
273- bool StartCursor ();
274- bool ReadAtCursor (CDataStream& ssKey, CDataStream& ssValue, bool & complete);
275- void CloseCursor ();
276- bool TxnBegin ();
277- bool TxnCommit ();
278- bool TxnAbort ();
222+ bool StartCursor () override ;
223+ bool ReadAtCursor (CDataStream& ssKey, CDataStream& ssValue, bool & complete) override ;
224+ void CloseCursor () override ;
225+ bool TxnBegin () override ;
226+ bool TxnCommit () override ;
227+ bool TxnAbort () override ;
279228};
280229
281230std::string BerkeleyDatabaseVersion ();
0 commit comments