#include "remoting/signaling/message_tracker.h"
#include "base/containers/cxx20_erase.h"
namespace remoting {
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;
});
}
}