void DuplicateManager::UpdateRecentHash()

in platform/consensus/execution/duplicate_manager.cpp [105:142]


void DuplicateManager::UpdateRecentHash() {
  uint64_t time = GetCurrentTime();
  while (!IsStop()) {
    time = time + frequency_useconds_;
    auto sleep_time = time - GetCurrentTime();
    usleep(sleep_time);
    while (true) {
      std::lock_guard<std::mutex> lk(prop_mutex_);
      if (!proposed_hash_time_queue_.empty()) {
        auto it = proposed_hash_time_queue_.front();
        if (it.second + window_useconds_ < time) {
          proposed_hash_time_queue_.pop();
          proposed_hash_set_.erase(it.first);
        } else {
          break;
        }
      } else {
        break;
      }
    }

    while (true) {
      std::lock_guard<std::mutex> lk(exec_mutex_);
      if (!executed_hash_time_queue_.empty()) {
        auto it = executed_hash_time_queue_.front();
        if (it.second + window_useconds_ < time) {
          executed_hash_time_queue_.pop();
          executed_hash_set_.erase(it.first);
          executed_hash_seq_.erase(it.first);
        } else {
          break;
        }
      } else {
        break;
      }
    }
  }
}