adding some hashing methods to db for debugging

This commit is contained in:
Daniel Larimer 2015-10-08 13:40:01 -04:00
parent bfef440968
commit 45f7819aba
5 changed files with 35 additions and 1 deletions

View file

@ -87,6 +87,14 @@ namespace graphene { namespace db {
} FC_CAPTURE_AND_RETHROW()
}
virtual fc::uint128 hash()const override {
fc::uint128 result;
for( const auto& ptr : _objects )
result += ptr.hash();
return result;
}
class const_iterator
{
public:

View file

@ -90,8 +90,19 @@ namespace graphene { namespace chain {
const index_type& indices()const { return _indices; }
virtual fc::uint128 hash()const override {
fc::uint128 result;
for( const auto& ptr : _indices )
{
result += ptr.hash();
}
return result;
}
private:
index_type _indices;
fc::uint128 _current_hash;
index_type _indices;
};
/**

View file

@ -122,6 +122,7 @@ namespace graphene { namespace db {
}
virtual void inspect_all_objects(std::function<void(const object&)> inspector)const = 0;
virtual fc::uint128 hash()const = 0;
virtual void add_observer( const shared_ptr<index_observer>& ) = 0;
};

View file

@ -18,6 +18,8 @@
#pragma once
#include <graphene/db/object_id.hpp>
#include <fc/io/raw.hpp>
#include <fc/crypto/city.hpp>
#include <fc/uint128.hpp>
namespace graphene { namespace db {
@ -67,6 +69,7 @@ namespace graphene { namespace db {
virtual void move_from( object& obj ) = 0;
virtual variant to_variant()const = 0;
virtual vector<char> pack()const = 0;
virtual fc::uint128 hash()const = 0;
};
/**
@ -91,6 +94,10 @@ namespace graphene { namespace db {
}
virtual variant to_variant()const { return variant( static_cast<const DerivedClass&>(*this) ); }
virtual vector<char> pack()const { return fc::raw::pack( static_cast<const DerivedClass&>(*this) ); }
virtual fc::uint128 hash()const {
auto tmp = this->pack();
return fc::city_hash_crc_128( tmp.data(), tmp.size() );
}
};
typedef flat_map<uint8_t, object_id_type> annotation_map;

View file

@ -92,6 +92,13 @@ namespace graphene { namespace db {
}
} FC_CAPTURE_AND_RETHROW()
}
virtual fc::uint128 hash()const override {
fc::uint128 result;
for( const auto& ptr : _objects )
result += ptr->hash();
return result;
}
class const_iterator
{