blob: f881c265ee759eb761e6df34245cbbf6fdc65148 [file] [log] [blame] [edit]
#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