device_google_tangorpro/cast_auth/mediadrm/SessionLibrary.cpp
Haoming Wu 66c1664383 CastAuthApk: Castkey AIDL mediaDrm plugin
Bug: 229298787
Test: Access Cast creds with MediaDrm plugin
Change-Id: I085b193ff4046d9005366c8bc8b3eb8020716b4b
2022-10-04 05:01:59 +00:00

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