diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/inspircd.h | 4 | ||||
-rw-r--r-- | include/threadengine.h | 10 | ||||
-rw-r--r-- | include/threadengines/threadengine_pthread.h | 19 | ||||
-rw-r--r-- | include/threadengines/threadengine_win32.h | 19 |
4 files changed, 52 insertions, 0 deletions
diff --git a/include/inspircd.h b/include/inspircd.h index 12e22794d..09bf02ba5 100644 --- a/include/inspircd.h +++ b/include/inspircd.h @@ -446,6 +446,10 @@ class CoreExport InspIRCd : public classbase */ ThreadEngine* Threads; + /** Mutex engine, handles mutexes for threading where required + */ + MutexEngine* Mutexes; + /** The thread/class used to read config files in REHASH and on startup */ ConfigReaderThread* ConfigThread; diff --git a/include/threadengine.h b/include/threadengine.h index 59d425481..4e0db0bfc 100644 --- a/include/threadengine.h +++ b/include/threadengine.h @@ -82,6 +82,16 @@ class CoreExport ThreadEngine : public Extensible } }; +class CoreExport Mutex : public Extensible +{ + protected: + InspIRCd* ServerInstance; + public: + Mutex(InspIRCd* Instance); + virtual void Enable(bool enable) = 0; + ~Mutex() { } +}; + /** Derive from this class to implement your own threaded sections of * code. */ diff --git a/include/threadengines/threadengine_pthread.h b/include/threadengines/threadengine_pthread.h index 602484b4e..07bda4598 100644 --- a/include/threadengines/threadengine_pthread.h +++ b/include/threadengines/threadengine_pthread.h @@ -54,4 +54,23 @@ class CoreExport ThreadEngineFactory : public classbase } }; +class CoreExport PosixMutex : public Mutex +{ + private: + pthread_mutex_t putex + public: + PosixMutex(InspIRCd* Instance); + virtual void Enable(bool enable); + ~PosixMutex(); +}; + +class CoreExport MutexEngine : public Extensible +{ + protected: + InspIRCd* ServerInstance; + public: + virtual MutexEngine(InspIRCd* Instance); + Mutex* CreateMutex(); +}; + #endif diff --git a/include/threadengines/threadengine_win32.h b/include/threadengines/threadengine_win32.h index 39e6ae88d..e19f24ca0 100644 --- a/include/threadengines/threadengine_win32.h +++ b/include/threadengines/threadengine_win32.h @@ -53,5 +53,24 @@ class CoreExport ThreadEngineFactory : public classbase } }; +class CoreExport Win32Mutex : public Mutex +{ + private: + CRITICAL_SECTION wutex; + public: + Win32Mutex(InspIRCd* Instance); + virtual void Enable(bool enable); + ~Win32Mutex(); +}; + +class CoreExport MutexEngine : public Extensible +{ + protected: + InspIRCd* ServerInstance; + public: + MutexEngine(InspIRCd* Instance); + virtual Mutex* CreateMutex(); +}; + #endif |