blob: 73a3beb0a72d2f0f27812c946560c08fef5f8588 [file] [log] [blame]
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "remoting/signaling/message_tracker.h"
#include "base/stl_util.h"
namespace remoting {
// static
const base::TimeDelta MessageTracker::kCleanupInterval =
base::TimeDelta::FromMinutes(2);
MessageTracker::MessageTracker() = default;
MessageTracker::~MessageTracker() = default;
void MessageTracker::TrackId(const std::string& id) {
tracked_ids_[id] = base::Time::Now();
if (!cleanup_timer_.IsRunning()) {
cleanup_timer_.Start(FROM_HERE, kCleanupInterval, this,
&MessageTracker::RemoveExpiredIds);
}
}
bool MessageTracker::IsIdTracked(const std::string& id) const {
return tracked_ids_.find(id) != tracked_ids_.end();
}
void MessageTracker::RemoveExpiredIds() {
base::Time expire_time = base::Time::Now() - kCleanupInterval;
base::EraseIf(tracked_ids_,
[expire_time](const std::pair<std::string, base::Time>& pair) {
return pair.second <= expire_time;
});
}
} // namespace remoting