diff options
| author | 2023-05-08 13:44:35 +0100 | |
|---|---|---|
| committer | 2023-05-08 13:49:54 +0100 | |
| commit | e2cd71b7060ec2e7be9a39e7e643221f185befff (patch) | |
| tree | 2bfc6def55507fdc96fa2f2cea9f9a779543d2c6 /src/thread.cpp | |
| parent | Rename command_parse to commands. (diff) | |
Move the contents of thread to threadsocket.
Diffstat (limited to 'src/thread.cpp')
| -rw-r--r-- | src/thread.cpp | 62 |
1 files changed, 0 insertions, 62 deletions
diff --git a/src/thread.cpp b/src/thread.cpp deleted file mode 100644 index d2008e2df..000000000 --- a/src/thread.cpp +++ /dev/null @@ -1,62 +0,0 @@ -/* - * InspIRCd -- Internet Relay Chat Daemon - * - * Copyright (C) 2019 Sadie Powell <sadie@witchery.services> - * - * This file is part of InspIRCd. InspIRCd 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, version 2. - * - * 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/>. - */ - - -#include "inspircd.h" - -bool Thread::Start() -{ - try - { - if (thread) - return false; - - thread = new std::thread(Thread::StartInternal, this); - return true; - } - catch (const std::system_error& err) - { - throw CoreException("Unable to start new thread: " + std::string(err.what())); - } -} - -void Thread::StartInternal(Thread* thread) -{ -#ifndef _WIN32 - // C++ does not have an API for this so we still need to use pthreads. - sigset_t set; - sigemptyset(&set); - sigaddset(&set, SIGPIPE); - pthread_sigmask(SIG_BLOCK, &set, nullptr); -#endif - - thread->OnStart(); -} - -bool Thread::Stop() -{ - if (!thread) - return false; - - OnStop(); - stopping = true; - thread->join(); - - stdalgo::delete_zero(thread); - return true; -} |
