// Copyright 2017 Google Inc. All Rights Reserved. #ifndef WVCDM_CORE_CDM_SESSION_MAP_H_ #define WVCDM_CORE_CDM_SESSION_MAP_H_ #include #include #include #include "lock.h" #include "wv_cdm_types.h" namespace wvcdm { class CdmSession; typedef std::list > CdmSessionList; class CdmSessionMap { public: CdmSessionMap() {} virtual ~CdmSessionMap(); void Add(const std::string& id, CdmSession* session); bool CloseSession(const std::string& id); bool Exists(const std::string& id); size_t Size() const { return sessions_.size(); } bool FindSession(const CdmSessionId& id, std::shared_ptr& session); void GetSessionList(CdmSessionList& sessions); private: typedef std::map > CdmIdToSessionMap; bool FindSessionNoLock(const CdmSessionId& session_id, std::shared_ptr& session); Lock lock_; CdmIdToSessionMap sessions_; CORE_DISALLOW_COPY_AND_ASSIGN(CdmSessionMap); }; } // namespace wvcdm #endif // WVCDM_CORE_CDM_SESSION_MAP_H_