diff options
-rw-r--r-- | node/Condition.hpp | 141 | ||||
-rw-r--r-- | node/EthernetTap.hpp | 1 | ||||
-rw-r--r-- | node/Node.cpp | 1 | ||||
-rw-r--r-- | node/RuntimeEnvironment.hpp | 11 |
4 files changed, 3 insertions, 151 deletions
diff --git a/node/Condition.hpp b/node/Condition.hpp deleted file mode 100644 index 1b11f1dc..00000000 --- a/node/Condition.hpp +++ /dev/null @@ -1,141 +0,0 @@ -/* - * ZeroTier One - Global Peer to Peer Ethernet - * Copyright (C) 2011-2014 ZeroTier Networks LLC - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * 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. If not, see <http://www.gnu.org/licenses/>. - * - * -- - * - * ZeroTier may be used and distributed under the terms of the GPLv3, which - * are available at: http://www.gnu.org/licenses/gpl-3.0.html - * - * If you would like to embed ZeroTier into a commercial application or - * redistribute it in a modified binary form, please contact ZeroTier Networks - * LLC. Start here: http://www.zerotier.com/ - */ - -#ifndef ZT_CONDITION_HPP -#define ZT_CONDITION_HPP - -#include "Constants.hpp" -#include "NonCopyable.hpp" - -#ifdef __WINDOWS__ - -#include <Windows.h> -#include <stdlib.h> - -#include "Utils.hpp" - -namespace ZeroTier { - -class Condition : NonCopyable -{ -public: - Condition() - throw() - { - _sem = CreateSemaphore(NULL,0,1,NULL); - } - - ~Condition() - { - CloseHandle(_sem); - } - - inline void wait() const - throw() - { - WaitForSingleObject(_sem,INFINITE); - } - - inline void wait(unsigned long ms) const - throw() - { - WaitForSingleObject(_sem,(DWORD)ms); - } - - inline void signal() const - throw() - { - ReleaseSemaphore(_sem,1,NULL); - } - -private: - HANDLE _sem; -}; - -} // namespace ZeroTier - -#else // !__WINDOWS__ - -#include <time.h> -#include <stdlib.h> -#include <pthread.h> -#include "Utils.hpp" - -namespace ZeroTier { - -class Condition : NonCopyable -{ -public: - Condition() - throw() - { - pthread_mutex_init(&_mh,(const pthread_mutexattr_t *)0); - pthread_cond_init(&_cond,(const pthread_condattr_t *)0); - } - - ~Condition() - { - pthread_cond_destroy(&_cond); - pthread_mutex_destroy(&_mh); - } - - inline void wait() const - throw() - { - pthread_mutex_lock(const_cast <pthread_mutex_t *>(&_mh)); - pthread_cond_wait(const_cast <pthread_cond_t *>(&_cond),const_cast <pthread_mutex_t *>(&_mh)); - pthread_mutex_unlock(const_cast <pthread_mutex_t *>(&_mh)); - } - - inline void wait(unsigned long ms) const - throw() - { - uint64_t when = Utils::now() + (uint64_t)ms; - struct timespec ts; - ts.tv_sec = (unsigned long)(when / 1000); - ts.tv_nsec = (unsigned long)(when % 1000) * 1000000; - pthread_mutex_lock(const_cast <pthread_mutex_t *>(&_mh)); - pthread_cond_timedwait(const_cast <pthread_cond_t *>(&_cond),const_cast <pthread_mutex_t *>(&_mh),&ts); - pthread_mutex_unlock(const_cast <pthread_mutex_t *>(&_mh)); - } - - inline void signal() const - throw() - { - pthread_cond_signal(const_cast <pthread_cond_t *>(&_cond)); - } - -private: - pthread_cond_t _cond; - pthread_mutex_t _mh; -}; - -} // namespace ZeroTier - -#endif // !__WINDOWS__ - -#endif diff --git a/node/EthernetTap.hpp b/node/EthernetTap.hpp index 7bd963a7..f6604c4d 100644 --- a/node/EthernetTap.hpp +++ b/node/EthernetTap.hpp @@ -43,7 +43,6 @@ #include "InetAddress.hpp" #include "MAC.hpp" #include "Mutex.hpp" -#include "Condition.hpp" #include "MulticastGroup.hpp" #include "Thread.hpp" #include "Buffer.hpp" diff --git a/node/Node.cpp b/node/Node.cpp index 29329b73..d6bb323f 100644 --- a/node/Node.cpp +++ b/node/Node.cpp @@ -54,7 +54,6 @@ #include <sys/file.h> #endif -#include "Condition.hpp" #include "Node.hpp" #include "Topology.hpp" #include "Demarc.hpp" diff --git a/node/RuntimeEnvironment.hpp b/node/RuntimeEnvironment.hpp index aca49fd0..ffa6cbdb 100644 --- a/node/RuntimeEnvironment.hpp +++ b/node/RuntimeEnvironment.hpp @@ -32,13 +32,11 @@ #include "Constants.hpp" #include "Identity.hpp" -#include "Condition.hpp" namespace ZeroTier { class NodeConfig; class Logger; -class Demarc; class Switch; class Topology; class SysEnv; @@ -47,6 +45,7 @@ class Service; class Node; class Multicaster; class SoftwareUpdater; +class SocketManager; /** * Holds global state for an instance of ZeroTier::Node @@ -70,7 +69,7 @@ public: prng((CMWC4096 *)0), mc((Multicaster *)0), sw((Switch *)0), - demarc((Demarc *)0), + sm((SocketManager *)0), topology((Topology *)0), sysEnv((SysEnv *)0), nc((NodeConfig *)0), @@ -84,10 +83,6 @@ public: // Full path to home folder std::string homePath; - // Main loop waits on this condition when it delays between runs, so - // signaling this will prematurely wake it. - Condition mainLoopWaitCondition; - // This node's identity Identity identity; @@ -109,7 +104,7 @@ public: CMWC4096 *prng; Multicaster *mc; Switch *sw; - Demarc *demarc; + SocketManager *sm; Topology *topology; SysEnv *sysEnv; NodeConfig *nc; |