diff options
author | Adam <Adam@anope.org> | 2010-10-01 21:01:49 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2010-10-01 21:01:49 -0400 |
commit | d44f7971b129aa7ba80999f16f17b8c7499686e1 (patch) | |
tree | a86d08c3e641ed6b499b53b3bbb74e2a7f5b0dfb /src/threadengine.cpp | |
parent | 70056dd4689eeab4f7a9b31a921e0d7e40d5ed0d (diff) |
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.
Diffstat (limited to 'src/threadengine.cpp')
-rw-r--r-- | src/threadengine.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
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<Thread *>::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 |