#include "DeviceActivityManager.hpp"
#include <algorithm>
namespace libobsensor {
DeviceActivityManager::DeviceActivityManager() {}
void DeviceActivityManager::update(const std::string &deviceId, std::shared_ptr<IDeviceActivityRecorder> activityRecorder) {
if(!activityRecorder) {
return;
}
auto lastActive = activityRecorder->getLastActive();
{
std::lock_guard<std::mutex> lock(mutex_);
deviceLastActive_[deviceId] = lastActive;
}
}
void DeviceActivityManager::removeActivity(const std::string &deviceId) {
std::lock_guard<std::mutex> lock(mutex_);
deviceLastActive_.erase(deviceId);
}
uint64_t DeviceActivityManager::getElapsedSinceLastActive(const std::string &deviceId) const {
uint64_t lastActive = 0;
{
std::lock_guard<std::mutex> lock(mutex_);
auto it = deviceLastActive_.find(deviceId);
if(it == deviceLastActive_.end()) {
return UINT64_MAX; }
lastActive = it->second;
}
uint64_t now = getNow();
return (now > lastActive) ? (now - lastActive) : 0;
}
}