5#ifndef SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP
6#define SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP
10#include <unordered_map>
12#include "skyway/room/interface/room_domain_cache_manager.hpp"
19class RoomDomainCacheManager :
public interface::RoomDomainCacheManager<T> {
21 ~RoomDomainCacheManager();
22 void CacheRoomDomainInstance(
const std::string&
id, std::shared_ptr<T> instance)
override;
23 std::shared_ptr<T> FindCachedRoomDomainInstance(
const std::string&
id)
override;
24 void RemoveCachedRoomDomainInstance(
const std::string&
id)
override;
27 void ClearExpiredDeletedInstanceIds();
29 std::unordered_map<std::string, std::shared_ptr<T>> cached_room_domain_instances_;
34 std::unordered_map<std::string, std::chrono::steady_clock::time_point>
35 deleted_room_domain_instance_ids_by_id_;
36 std::multimap<std::chrono::steady_clock::time_point, std::string>
37 deleted_room_domain_instance_ids_by_time_;
40 friend class RoomDomainCacheManagerTest;