From fffd213c8cba2135afda493d797c41c10354770e Mon Sep 17 00:00:00 2001 From: Othmar Gsenger Date: Sat, 12 Apr 2008 11:38:42 +0000 Subject: big svn cleanup --- threadUtils.hpp | 175 -------------------------------------------------------- 1 file changed, 175 deletions(-) delete mode 100644 threadUtils.hpp (limited to 'threadUtils.hpp') diff --git a/threadUtils.hpp b/threadUtils.hpp deleted file mode 100644 index f084980..0000000 --- a/threadUtils.hpp +++ /dev/null @@ -1,175 +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 - * - * 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 - */ - -#ifndef _THREADUTILS_HPP_ -#define _THREADUTILS_HPP_ - -#include -#include -#include - -class Mutex -{ -public: - Mutex() - { - if(pthread_mutex_init(&mutex,NULL)) - throw std::runtime_error("can't create mutex"); - } - - ~Mutex() - { - pthread_mutex_destroy(&mutex); - } - -private: - Mutex(const Mutex& src); - void operator=(const Mutex& src); - - void lock() - { - if(pthread_mutex_lock(&mutex)) - throw std::runtime_error("can't lock mutex"); - } - - void unlock() - { - if(pthread_mutex_unlock(&mutex)) - throw std::runtime_error("can't unlock mutex"); - } - friend class Lock; - friend class Condition; - pthread_mutex_t mutex; -}; - - -class Lock -{ -public: - Lock(Mutex &m) : mutex(m) - { - mutex.lock(); - } - - ~Lock() - { - mutex.unlock(); - } - -private: - Lock(const Lock& src); - void operator=(const Lock& src); - - Mutex &mutex; -}; - -class Condition -{ -public: - Condition() - { - if(pthread_cond_init(&cond, NULL)) - throw std::runtime_error("can't create condition"); - } - - ~Condition() - { - pthread_cond_destroy(&cond); - } - - void wait() - { - mutex.lock(); - if(pthread_cond_wait(&cond, &mutex.mutex)) - { - mutex.unlock(); - throw std::runtime_error("error on waiting for condition"); - } - mutex.unlock(); - } - - void signal() - { - mutex.lock(); - if(pthread_cond_signal(&cond)) - { - mutex.unlock(); - throw std::runtime_error("can't signal condition"); - } - mutex.unlock(); - } - - void broadcast() - { - mutex.lock(); - if(pthread_cond_broadcast(&cond)) - { - mutex.unlock(); - throw std::runtime_error("can't broadcast condition"); - } - mutex.unlock(); - } - -private: - pthread_cond_t cond; - Mutex mutex; -}; - -class Semaphore -{ -public: - Semaphore(unsigned int initVal=0) - { - if(sem_init(&sem, 0, initVal)) - throw std::runtime_error("can't create semaphore"); - } - - ~Semaphore() - { - sem_destroy(&sem); - } - - void down() - { - if(sem_wait(&sem)) - throw std::runtime_error("error on semaphore down"); - } - - void up() - { - if(sem_post(&sem)) - throw std::runtime_error("error on semaphore up"); - } - -private: - sem_t sem; -}; - -#endif -- cgit v1.2.3