std::remove_if consolidates the non-removed elements at the start of the vector, but it doesn't change the vector's size. After upgrading libc++, std::remove_if is [[nodiscard]], so this bug causes a compiler error. Bug: 175635923 Test: m android.hardware.drm-service.castkey Change-Id: Ie9734e616f0f93e290cd61f929af04598f236ee7
39 lines
No EOL
1.1 KiB
C++
39 lines
No EOL
1.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_);
|
|
sessions_.erase(std::remove_if(sessions_.begin(), sessions_.end(),
|
|
[&session](const std::vector<uint8_t>& e) {
|
|
return std::equal(e.begin(), e.end(), session.begin());
|
|
}),
|
|
sessions_.end());
|
|
}
|
|
|
|
} // namespace castkeydrm
|