1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00
new database
fift/func bugfixes
This commit is contained in:
ton 2019-11-15 18:02:37 +04:00
parent 950e292264
commit e30d98eb30
110 changed files with 6102 additions and 2075 deletions

View file

@ -56,11 +56,12 @@ struct BlockHandleImpl : public BlockHandleInterface {
dbf_inited_state_boc = 0x100000,
dbf_archived = 0x200000,
dbf_applied = 0x400000,
dbf_moved = 0x1000000,
dbf_inited_masterchain_ref_block = 0x800000,
dbf_deleted = 0x2000000,
dbf_deleted_boc = 0x4000000,
dbf_moved_new = 0x8000000,
dbf_processed = 0x10000000,
dbf_moved_handle = 0x20000000,
};
std::atomic<td::uint64> version_{0};
@ -72,6 +73,7 @@ struct BlockHandleImpl : public BlockHandleInterface {
LogicalTime lt_;
UnixTime ts_;
RootHash state_;
BlockSeqno masterchain_ref_seqno_;
static constexpr td::uint64 lock_const() {
return static_cast<td::uint64>(1) << 32;
@ -93,12 +95,12 @@ struct BlockHandleImpl : public BlockHandleInterface {
bool received() const override {
return flags_.load(std::memory_order_consume) & Flags::dbf_received;
}
bool moved_to_storage() const override {
return flags_.load(std::memory_order_consume) & Flags::dbf_moved;
}
bool moved_to_archive() const override {
return flags_.load(std::memory_order_consume) & Flags::dbf_moved_new;
}
bool handle_moved_to_archive() const override {
return flags_.load(std::memory_order_consume) & Flags::dbf_moved_handle;
}
bool deleted() const override {
return flags_.load(std::memory_order_consume) & Flags::dbf_deleted;
}
@ -199,6 +201,13 @@ struct BlockHandleImpl : public BlockHandleInterface {
bool is_applied() const override {
return flags_.load(std::memory_order_consume) & Flags::dbf_applied;
}
bool inited_masterchain_ref_block() const override {
return id_.is_masterchain() || (flags_.load(std::memory_order_consume) & Flags::dbf_inited_masterchain_ref_block);
}
BlockSeqno masterchain_ref_block() const override {
CHECK(inited_masterchain_ref_block());
return id_.is_masterchain() ? id_.seqno() : masterchain_ref_seqno_;
}
std::vector<BlockIdExt> prev() const override {
if (is_zero()) {
return {};
@ -389,23 +398,17 @@ struct BlockHandleImpl : public BlockHandleInterface {
flags_ |= Flags::dbf_received;
unlock();
}
void set_moved_to_storage() override {
if (flags_.load(std::memory_order_consume) & Flags::dbf_moved) {
return;
}
lock();
flags_ |= Flags::dbf_moved;
unlock();
}
void set_moved_to_archive() override {
if (flags_.load(std::memory_order_consume) & Flags::dbf_moved_new) {
return;
}
lock();
flags_ |= Flags::dbf_moved_new;
flags_ &= ~Flags::dbf_moved;
unlock();
}
void set_handle_moved_to_archive() override {
flags_ |= Flags::dbf_moved_handle;
}
void set_deleted() override {
if (flags_.load(std::memory_order_consume) & Flags::dbf_deleted) {
return;
@ -485,6 +488,14 @@ struct BlockHandleImpl : public BlockHandleInterface {
unlock();
}
}
void set_masterchain_ref_block(BlockSeqno seqno) override {
if (!inited_masterchain_ref_block()) {
lock();
masterchain_ref_seqno_ = seqno;
flags_ |= Flags::dbf_inited_masterchain_ref_block;
unlock();
}
}
void unsafe_clear_applied() override {
if (is_applied()) {