diff options
Diffstat (limited to 'rtpSessionTable.cpp')
-rw-r--r-- | rtpSessionTable.cpp | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/rtpSessionTable.cpp b/rtpSessionTable.cpp deleted file mode 100644 index 5beb3d6..0000000 --- a/rtpSessionTable.cpp +++ /dev/null @@ -1,121 +0,0 @@ -/* - * anytun - * - * The secure anycast tunneling protocol (satp) defines a protocol used - * for communication between any combination of unicast and anycast - * tunnel endpoints. It has less protocol overhead than IPSec in Tunnel - * mode and allows tunneling of every ETHER TYPE protocol (e.g. - * ethernet, ip, arp ...). satp directly includes cryptography and - * message authentication based on the methodes used by SRTP. It is - * intended to deliver a generic, scaleable and secure solution for - * tunneling and relaying of packets of any protocol. - * - * - * Copyright (C) 2007 anytun.org <satp@wirdorange.org> - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License version 2 - * as published by the Free Software Foundation. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program (see the file COPYING included with this - * distribution); if not, write to the Free Software Foundation, Inc., - * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "threadUtils.hpp" -#include "datatypes.h" - -#include "rtpSessionTable.h" - -RtpSessionTable* RtpSessionTable::inst = NULL; -Mutex RtpSessionTable::instMutex; -RtpSessionTable& gRtpSessionTable = RtpSessionTable::instance(); - - -RtpSessionTable& RtpSessionTable::instance() -{ - Lock lock(instMutex); - static instanceCleaner c; - if(!inst) - inst = new RtpSessionTable(); - - return *inst; -} - -RtpSessionTable::RtpSessionTable() -{ -} - -RtpSessionTable::~RtpSessionTable() -{ -} - -void RtpSessionTable::delSession(const std::string & call_id) -{ - Lock lock(mutex_); - - RtpSessionMap::iterator it = map_.find(call_id); - if(it!=map_.end()) - delete it->second; - - map_.erase(it); -} - -RtpSession& RtpSessionTable::getOrNewSession(const std::string & call_id, bool& is_new) -{ - Lock lock(mutex_); - return getOrNewSessionUnlocked(call_id, is_new); -} - -RtpSession& RtpSessionTable::getOrNewSessionUnlocked(const std::string & call_id, bool& is_new) -{ - is_new = false; - RtpSessionMap::iterator it = map_.find(call_id); - if(it!=map_.end()) - return *(it->second); - - is_new = true; - std::pair<RtpSessionMap::iterator, bool> ret = map_.insert(RtpSessionMap::value_type(call_id, NULL)); - ret.first->second = new RtpSession(ret.first->first); - return *(ret.first->second); -} - -RtpSession& RtpSessionTable::getSession(const std::string & call_id) -{ - RtpSessionMap::iterator it = map_.find(call_id); - if(it!=map_.end()) - return *(it->second); - - throw std::runtime_error("session not found"); -} - -RtpSessionMap::iterator RtpSessionTable::getBeginUnlocked() -{ - return map_.begin(); -} - -RtpSessionMap::iterator RtpSessionTable::getEndUnlocked() -{ - return map_.end(); -} - -void RtpSessionTable::clear() -{ - Lock lock(mutex_); - map_.clear(); -} - -bool RtpSessionTable::empty() -{ - Lock lock(mutex_); - return map_.empty(); -} - -Mutex& RtpSessionTable::getMutex() -{ - return mutex_; -} |