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

tonNode.getOutMsgQueueProof query in public shard overlays (#1413)

* tonNode.getOutMsgQueueProof query in public shard overlays

* Allow responding to getOutMsgQueueProof requests one at a time only
This commit is contained in:
SpyCheese 2024-12-04 14:38:57 +03:00 committed by GitHub
parent 9ae88d87e3
commit 7bc50e63d7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
37 changed files with 729 additions and 51 deletions

View file

@ -31,16 +31,19 @@ class TokenManager : public td::actor::Actor {
public:
TokenManager() {
}
explicit TokenManager(td::uint32 max_tokens)
: free_tokens_(max_tokens), free_priority_tokens_(max_tokens), max_priority_tokens_(max_tokens) {
}
void alarm() override;
void get_download_token(size_t download_size, td::uint32 priority, td::Timestamp timeout,
td::Promise<std::unique_ptr<DownloadToken>> promise);
void download_token_cleared(size_t download_size, td::uint32 priority);
void get_token(size_t size, td::uint32 priority, td::Timestamp timeout,
td::Promise<std::unique_ptr<ActionToken>> promise);
void token_cleared(size_t size, td::uint32 priority);
private:
std::unique_ptr<DownloadToken> gen_token(size_t download_size, td::uint32 priority);
std::unique_ptr<ActionToken> gen_token(size_t size, td::uint32 priority);
struct PendingPromiseKey {
size_t download_size;
size_t size;
td::uint32 priority;
td::uint64 seqno;
@ -50,7 +53,7 @@ class TokenManager : public td::actor::Actor {
};
struct PendingPromise {
td::Timestamp timeout;
td::Promise<std::unique_ptr<DownloadToken>> promise;
td::Promise<std::unique_ptr<ActionToken>> promise;
};
td::uint64 seqno_ = 0;
std::map<PendingPromiseKey, PendingPromise> pending_;