message_tracker.cc 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "remoting/signaling/message_tracker.h"
  5. #include "base/containers/cxx20_erase.h"
  6. namespace remoting {
  7. // static
  8. const base::TimeDelta MessageTracker::kCleanupInterval = base::Minutes(2);
  9. MessageTracker::MessageTracker() = default;
  10. MessageTracker::~MessageTracker() = default;
  11. void MessageTracker::TrackId(const std::string& id) {
  12. tracked_ids_[id] = base::Time::Now();
  13. if (!cleanup_timer_.IsRunning()) {
  14. cleanup_timer_.Start(FROM_HERE, kCleanupInterval, this,
  15. &MessageTracker::RemoveExpiredIds);
  16. }
  17. }
  18. bool MessageTracker::IsIdTracked(const std::string& id) const {
  19. return tracked_ids_.find(id) != tracked_ids_.end();
  20. }
  21. void MessageTracker::RemoveExpiredIds() {
  22. base::Time expire_time = base::Time::Now() - kCleanupInterval;
  23. base::EraseIf(tracked_ids_,
  24. [expire_time](const std::pair<std::string, base::Time>& pair) {
  25. return pair.second <= expire_time;
  26. });
  27. }
  28. } // namespace remoting