1
0
Fork 0
mirror of https://github.com/ton-blockchain/ton synced 2025-03-09 15:40:10 +00:00

Make asynchronous celldb interface (#388)

* Asynchronous load_cell in celldb

Co-authored-by: SpyCheese <mikle98@yandex.ru>
This commit is contained in:
EmelyanenkoK 2022-06-01 10:03:50 +03:00 committed by GitHub
parent ca00f0ed91
commit 845cbca1e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 159 additions and 10 deletions

View file

@ -33,8 +33,19 @@ namespace validator {
class RootDb;
class CellDb;
class CellDbAsyncExecutor;
class CellDbIn : public td::actor::Actor {
class CellDbBase : public td::actor::Actor {
public:
virtual void start_up();
protected:
std::shared_ptr<vm::DynamicBagOfCellsDb::AsyncExecutor> async_executor;
private:
void execute_sync(std::function<void()> f);
friend CellDbAsyncExecutor;
};
class CellDbIn : public CellDbBase {
public:
using KeyHash = td::Bits256;
@ -89,7 +100,7 @@ class CellDbIn : public td::actor::Actor {
KeyHash last_gc_;
};
class CellDb : public td::actor::Actor {
class CellDb : public CellDbBase {
public:
void load_cell(RootHash hash, td::Promise<td::Ref<vm::DataCell>> promise);
void store_cell(BlockIdExt block_id, td::Ref<vm::Cell> cell, td::Promise<td::Ref<vm::DataCell>> promise);