blob: d3b82c05ed370dccbb12a3e42454e00858570f6f [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/containers/cxx20_erase.h"
namespace remoting {
// static
const base::TimeDelta MessageTracker::kCleanupInterval = base::Minutes(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