1 #include "SessionLibrary.h" 2 3 #include <algorithm> 4 #include <string> 5 6 namespace castkeydrm { 7 8 std::mutex SessionLibrary::singleton_lock_; 9 SessionLibrary* SessionLibrary::singleton_ = NULL; 10 get()11SessionLibrary* SessionLibrary::get() { 12 std::lock_guard<std::mutex> guard(singleton_lock_); 13 14 if (singleton_ == NULL) { 15 singleton_ = new SessionLibrary(); 16 } 17 18 return singleton_; 19 } 20 createSession()21std::vector<uint8_t> SessionLibrary::createSession() { 22 std::lock_guard<std::mutex> guard(session_lock_); 23 24 std::string session_string = std::to_string(next_session_id_); 25 next_session_id_ += 1; 26 sessions_.emplace_back(session_string.begin(), session_string.end()); 27 return sessions_.back(); 28 } 29 closeSession(const std::vector<uint8_t> & session)30void SessionLibrary::closeSession(const std::vector<uint8_t>& session) { 31 std::lock_guard<std::mutex> guard(session_lock_); 32 std::remove_if(sessions_.begin(), sessions_.end(), 33 [&session](const std::vector<uint8_t>& e) { 34 return std::equal(e.begin(), e.end(), session.begin()); 35 }); 36 } 37 38 } // namespace castkeydrm