MCPcopy Create free account
hub / github.com/TelegramMessenger/cocoon / sync_once

Method sync_once

runners/TonlibWrapper.cpp:125–139  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

123 co_return td::Unit();
124}
125td::actor::Task<TonlibWrapper::SyncInfo> TonlibWrapper::sync_once() {
126 auto block = co_await request<tonlib_api::sync>();
127 LOG(DEBUG) << "tonlib: synced up to " << block->seqno_;
128 auto seqno = block->seqno_;
129 auto block_header = co_await request<tonlib_api::blocks_getBlockHeader>(std::move(block));
130 auto blockchain_time = td::narrow_cast<td::int32>(block_header->gen_utime_);
131 auto local_time = static_cast<td::int32>(td::Clocks::system());
132 auto time_diff = std::abs(blockchain_time - local_time);
133 if (time_diff > 30) {
134 co_return td::Status::Error(PSLICE() << "Time is not synced: " << time_diff
135 << "s blockchain_time=" << blockchain_time << " local_time=" << local_time);
136 }
137 co_return SyncInfo{.last_synced_seqno = static_cast<td::uint32>(seqno),
138 .last_synced_ts = static_cast<td::uint32>(blockchain_time)};
139}
140td::actor::Task<TonlibWrapper::SyncInfo> TonlibWrapper::sync() {
141 while (true) {
142 LOG(INFO) << "Syncing...";

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected