From d44f7971b129aa7ba80999f16f17b8c7499686e1 Mon Sep 17 00:00:00 2001 From: Adam Date: Fri, 1 Oct 2010 21:01:49 -0400 Subject: Rewrote some of the socket code to allow m_ssl to be a service. This allows modules (xmlrpc) to create and accept SSL connections. Also fixed unloading m_mysql at certain times and made the threading engine always work correctly on Windows. --- src/threadengine.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) (limited to 'src/threadengine.cpp') diff --git a/src/threadengine.cpp b/src/threadengine.cpp index 36a73d324..0ac049c38 100644 --- a/src/threadengine.cpp +++ b/src/threadengine.cpp @@ -2,16 +2,39 @@ ThreadEngine threadEngine; +/** Check for finished threads + */ +void ThreadEngine::Process() +{ + for (unsigned i = this->threads.size(); i > 0; --i) + { + Thread *t = this->threads[i - 1]; + + if (t->GetExitState()) + { + t->Join(); + delete t; + } + } +} + /** Threads constructor */ Thread::Thread() : Exit(false) { + threadEngine.threads.push_back(this); } /** Threads destructor */ Thread::~Thread() { + std::vector::iterator it = std::find(threadEngine.threads.begin(), threadEngine.threads.end(), this); + + if (it != threadEngine.threads.end()) + { + threadEngine.threads.erase(it); + } } /** Sets the exit state as true informing the thread we want it to shut down -- cgit