| 123 | co_return td::Unit(); |
| 124 | } |
| 125 | td::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 | } |
| 140 | td::actor::Task<TonlibWrapper::SyncInfo> TonlibWrapper::sync() { |
| 141 | while (true) { |
| 142 | LOG(INFO) << "Syncing..."; |
nothing calls this directly
no outgoing calls
no test coverage detected