#pragma once // Copyright (c) 2018-2020 David Burkett // Copyright (c) 2020 The Litecoin Developers // Distributed under the MIT software license, see the accompanying // file LICENSE or http://www.opensource.org/licenses/mit-license.php. #include #include #include #include #include MW_NAMESPACE class DBBatch { public: using UPtr = std::unique_ptr; virtual ~DBBatch() = default; virtual void Write(const std::string& key, const std::vector& value) = 0; virtual void Erase(const std::string& key) = 0; virtual void Commit() = 0; }; class DBIterator { public: virtual ~DBIterator() = default; virtual void Seek(const std::string& key) = 0; virtual void Next() = 0; virtual bool GetKey(std::string& key) const = 0; virtual bool Valid() const = 0; }; class DBWrapper { public: using Ptr = std::shared_ptr; virtual ~DBWrapper() = default; virtual bool Read(const std::string& key, std::vector& value) const = 0; virtual std::unique_ptr NewIterator() = 0; virtual std::unique_ptr CreateBatch() = 0; }; END_NAMESPACE // mw