1#ifndef SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP
2#define SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP
6#include <unordered_map>
8#include "skyway/room/interface/room_domain_cache_manager.hpp"
15class RoomDomainCacheManager :
public interface::RoomDomainCacheManager<T> {
17 ~RoomDomainCacheManager();
18 void CacheRoomDomainInstance(
const std::string&
id, std::shared_ptr<T> instance)
override;
19 std::shared_ptr<T> FindCachedRoomDomainInstance(
const std::string&
id)
override;
20 void RemoveCachedRoomDomainInstance(
const std::string&
id)
override;
23 void ClearExpiredDeletedInstanceIds();
25 std::unordered_map<std::string, std::shared_ptr<T>> cached_room_domain_instances_;
27 std::unordered_map<std::string, std::chrono::steady_clock::time_point>
28 deleted_room_domain_instance_ids_by_id_;
29 std::multimap<std::chrono::steady_clock::time_point, std::string>
30 deleted_room_domain_instance_ids_by_time_;
33 friend class RoomDomainCacheManagerTest;