• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()11 SessionLibrary* 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()21 std::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)30 void 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