SkyWay Linux SDK
読み取り中…
検索中…
一致する文字列を見つけられません
room_domain_cache_manager.hpp
1#ifndef SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP
2#define SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP
3
4#include <map>
5#include <mutex>
6#include <unordered_map>
7
8#include "skyway/room/interface/room_domain_cache_manager.hpp"
9
10namespace skyway {
11namespace room {
12
14template <typename T>
15class RoomDomainCacheManager : public interface::RoomDomainCacheManager<T> {
16public:
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;
21
22private:
23 void ClearExpiredDeletedInstanceIds();
24 std::mutex mtx_;
25 std::unordered_map<std::string, std::shared_ptr<T>> cached_room_domain_instances_;
26
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_;
31
32public:
33 friend class RoomDomainCacheManagerTest;
34};
36
37} // namespace room
38} // namespace skyway
39
40#endif /* SKYWAY_ROOM_ROOM_DOMAIN_CACHE_MANAGER_HPP */