mirror of
https://github.com/monero-project/monero.git
synced 2025-07-25 04:35:21 -04:00
Initial commit of BlockchainDB tests, other misc
miscellaneous changes to BlockchainDB/blockchain as well, namely replacing instances of std::list with std::vector
This commit is contained in:
parent
90d6f8bf62
commit
bc44bc19f4
3 changed files with 315 additions and 6 deletions
|
@ -547,11 +547,16 @@ bool Blockchain::get_block_by_hash(const crypto::hash &h, block &blk)
|
|||
return false;
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
//FIXME: this function does not seem to be called from anywhere, but
|
||||
// if it ever is, should probably change std::list for std::vector
|
||||
void Blockchain::get_all_known_block_ids(std::list<crypto::hash> &main, std::list<crypto::hash> &alt, std::list<crypto::hash> &invalid)
|
||||
{
|
||||
CRITICAL_REGION_LOCAL(m_blockchain_lock);
|
||||
|
||||
main = m_db->get_hashes_range(0, m_db->height());
|
||||
for (auto& a : m_db->get_hashes_range(0, m_db->height()))
|
||||
{
|
||||
main.push_back(a);
|
||||
}
|
||||
|
||||
BOOST_FOREACH(blocks_ext_by_hash::value_type &v, m_alternative_chains)
|
||||
alt.push_back(v.first);
|
||||
|
|
|
@ -25,6 +25,8 @@
|
|||
// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
|
||||
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#ifndef BLOCKCHAIN_DB_H
|
||||
#define BLOCKCHAIN_DB_H
|
||||
|
||||
#include <list>
|
||||
#include <string>
|
||||
|
@ -70,6 +72,8 @@
|
|||
* bool lock()
|
||||
* unlock()
|
||||
*
|
||||
* vector<str> get_filenames()
|
||||
*
|
||||
* Blocks:
|
||||
* bool block_exists(hash)
|
||||
* height add_block(block, block_size, cumulative_difficulty, coins_generated, transactions)
|
||||
|
@ -364,6 +368,11 @@ private:
|
|||
|
||||
|
||||
public:
|
||||
|
||||
// virtual dtor
|
||||
virtual ~BlockchainDB() { };
|
||||
|
||||
|
||||
// open the db at location <filename>, or create it if there isn't one.
|
||||
virtual void open(const std::string& filename) = 0;
|
||||
|
||||
|
@ -379,6 +388,9 @@ public:
|
|||
// reset the db -- USE WITH CARE
|
||||
virtual void reset() = 0;
|
||||
|
||||
// get all files used by this db (if any)
|
||||
virtual std::vector<std::string> get_filenames() = 0;
|
||||
|
||||
|
||||
// FIXME: these are just for functionality mocking, need to implement
|
||||
// RAII-friendly and multi-read one-write friendly locking mechanism
|
||||
|
@ -435,11 +447,11 @@ public:
|
|||
// return hash of block at height <height>
|
||||
virtual crypto::hash get_block_hash_from_height(const uint64_t& height) = 0;
|
||||
|
||||
// return list of blocks in range <h1,h2> of height.
|
||||
virtual std::list<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) = 0;
|
||||
// return vector of blocks in range <h1,h2> of height (inclusively)
|
||||
virtual std::vector<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) = 0;
|
||||
|
||||
// return list of block hashes in range <h1, h2> of height
|
||||
virtual std::list<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) = 0;
|
||||
// return vector of block hashes in range <h1, h2> of height (inclusively)
|
||||
virtual std::vector<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) = 0;
|
||||
|
||||
// return the hash of the top block on the chain
|
||||
virtual crypto::hash top_block_hash() = 0;
|
||||
|
@ -479,7 +491,7 @@ public:
|
|||
// return list of tx with hashes <hlist>.
|
||||
// TODO: decide if a missing hash means return empty list
|
||||
// or just skip that hash
|
||||
virtual std::list<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) = 0;
|
||||
virtual std::vector<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) = 0;
|
||||
|
||||
// returns height of block that contains transaction with hash <h>
|
||||
virtual uint64_t get_tx_block_height(const crypto::hash& h) = 0;
|
||||
|
@ -511,3 +523,5 @@ public:
|
|||
|
||||
|
||||
} // namespace cryptonote
|
||||
|
||||
#endif // BLOCKCHAIN_DB_H
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue