Bug: 229298787 Test: Access Cast creds with MediaDrm plugin Change-Id: I085b193ff4046d9005366c8bc8b3eb8020716b4b
38 lines
No EOL
1 KiB
C++
38 lines
No EOL
1 KiB
C++
#include "SessionLibrary.h"
|
|
|
|
#include <algorithm>
|
|
#include <string>
|
|
|
|
namespace castkeydrm {
|
|
|
|
std::mutex SessionLibrary::singleton_lock_;
|
|
SessionLibrary* SessionLibrary::singleton_ = NULL;
|
|
|
|
SessionLibrary* SessionLibrary::get() {
|
|
std::lock_guard<std::mutex> guard(singleton_lock_);
|
|
|
|
if (singleton_ == NULL) {
|
|
singleton_ = new SessionLibrary();
|
|
}
|
|
|
|
return singleton_;
|
|
}
|
|
|
|
std::vector<uint8_t> SessionLibrary::createSession() {
|
|
std::lock_guard<std::mutex> guard(session_lock_);
|
|
|
|
std::string session_string = std::to_string(next_session_id_);
|
|
next_session_id_ += 1;
|
|
sessions_.emplace_back(session_string.begin(), session_string.end());
|
|
return sessions_.back();
|
|
}
|
|
|
|
void SessionLibrary::closeSession(const std::vector<uint8_t>& session) {
|
|
std::lock_guard<std::mutex> guard(session_lock_);
|
|
std::remove_if(sessions_.begin(), sessions_.end(),
|
|
[&session](const std::vector<uint8_t>& e) {
|
|
return std::equal(e.begin(), e.end(), session.begin());
|
|
});
|
|
}
|
|
|
|
} // namespace castkeydrm
|