summaryrefslogtreecommitdiffstats
path: root/src/Net/ThreadManager.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Net/ThreadManager.h')
-rw-r--r--src/Net/ThreadManager.h23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/Net/ThreadManager.h b/src/Net/ThreadManager.h
index 9e2b3d3..327ba67 100644
--- a/src/Net/ThreadManager.h
+++ b/src/Net/ThreadManager.h
@@ -17,11 +17,13 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef MAD_COMMON_THREADMANAGER_H_
-#define MAD_COMMON_THREADMANAGER_H_
+#ifndef MAD_NET_THREADMANAGER_H_
+#define MAD_NET_THREADMANAGER_H_
#include <config.h>
+#include "FdManager.h"
+
#include <Common/Initializable.h>
#include <Common/LogManager.h>
@@ -38,7 +40,7 @@ namespace Net {
class ThreadManager : public Common::Initializable {
private:
- gl_thread_t mainThread, workerThread, loggerThread;
+ gl_thread_t mainThread, workerThread, loggerThread, ioThread;
std::set<gl_thread_t> threads;
gl_lock_t threadLock;
@@ -50,11 +52,6 @@ class ThreadManager : public Common::Initializable {
gl_cond_t workCond;
std::queue<sigc::slot<void> > work;
- gl_lock_t ioLock;
- bool hasIO;
- int ioNotifyPipe[2];
- std::queue<sigc::slot<void> > ioQueue;
-
static ThreadManager threadManager;
ThreadManager() {}
@@ -69,6 +66,11 @@ class ThreadManager : public Common::Initializable {
return 0;
}
+ static void* ioStart(void*) {
+ FdManager::get()->ioThread();
+ return 0;
+ }
+
void workerFunc();
void threadFinished(gl_thread_t thread) {
@@ -98,9 +100,6 @@ class ThreadManager : public Common::Initializable {
void detach();
void pushWork(const sigc::slot<void> &newWork);
- void pushIO(const sigc::slot<void> &newIO);
-
- void runIO();
static ThreadManager* get() {
return &threadManager;
@@ -110,4 +109,4 @@ class ThreadManager : public Common::Initializable {
}
}
-#endif /* MAD_COMMON_THREADMANAGER_H_ */
+#endif /* MAD_NET_THREADMANAGER_H_ */