#include "remoting/signaling/message_tracker.h"
#include <map>
#include "base/containers/contains.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 base::Contains(tracked_ids_, id);
}
void MessageTracker::RemoveExpiredIds() {
base::Time expire_time = base::Time::Now() - kCleanupInterval;
std::erase_if(tracked_ids_,
[expire_time](const std::pair<std::string, base::Time>& pair) {
return pair.second <= expire_time;
});
}
}