2008-02-10 14:32:02 +00:00
|
|
|
/* +------------------------------------+
|
|
|
|
* | Inspire Internet Relay Chat Daemon |
|
|
|
|
* +------------------------------------+
|
|
|
|
*
|
|
|
|
* InspIRCd: (C) 2002-2008 InspIRCd Development Team
|
|
|
|
* See: http://www.inspircd.org/wiki/index.php/Credits
|
|
|
|
*
|
|
|
|
* This program is free but copyrighted software; see
|
|
|
|
* the file COPYING for details.
|
|
|
|
*
|
|
|
|
* ---------------------------------------------------
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __THREADENGINE_PTHREAD__
|
|
|
|
#define __THREADENGINE_PTHREAD__
|
|
|
|
|
|
|
|
#include <pthread.h>
|
|
|
|
#include "inspircd_config.h"
|
|
|
|
#include "base.h"
|
|
|
|
#include "threadengine.h"
|
|
|
|
|
|
|
|
class InspIRCd;
|
|
|
|
|
|
|
|
class CoreExport PThreadEngine : public ThreadEngine
|
|
|
|
{
|
2008-09-06 14:41:44 +00:00
|
|
|
private:
|
|
|
|
|
|
|
|
bool Mutex(bool enable);
|
|
|
|
|
2008-02-10 14:32:02 +00:00
|
|
|
public:
|
|
|
|
|
|
|
|
PThreadEngine(InspIRCd* Instance);
|
|
|
|
|
|
|
|
virtual ~PThreadEngine();
|
|
|
|
|
|
|
|
void Run();
|
|
|
|
|
|
|
|
static void* Entry(void* parameter);
|
|
|
|
|
|
|
|
void Create(Thread* thread_to_init);
|
2008-02-10 14:50:38 +00:00
|
|
|
|
|
|
|
void FreeThread(Thread* thread);
|
2008-02-21 17:59:26 +00:00
|
|
|
|
|
|
|
const std::string GetName()
|
|
|
|
{
|
|
|
|
return "posix-thread";
|
|
|
|
}
|
2008-02-10 14:32:02 +00:00
|
|
|
};
|
|
|
|
|
2008-02-22 21:19:19 +00:00
|
|
|
class CoreExport ThreadEngineFactory : public classbase
|
2008-02-21 17:06:20 +00:00
|
|
|
{
|
2008-02-21 17:11:31 +00:00
|
|
|
public:
|
2008-02-21 17:06:20 +00:00
|
|
|
ThreadEngine* Create(InspIRCd* ServerInstance)
|
|
|
|
{
|
|
|
|
return new PThreadEngine(ServerInstance);
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2008-09-04 10:06:59 +00:00
|
|
|
class CoreExport PosixMutex : public Mutex
|
|
|
|
{
|
|
|
|
private:
|
2008-09-04 10:28:21 +00:00
|
|
|
pthread_mutex_t putex;
|
2008-09-04 10:06:59 +00:00
|
|
|
public:
|
|
|
|
PosixMutex(InspIRCd* Instance);
|
|
|
|
virtual void Enable(bool enable);
|
|
|
|
~PosixMutex();
|
|
|
|
};
|
|
|
|
|
2008-09-04 11:03:58 +00:00
|
|
|
class CoreExport MutexFactory : public Extensible
|
2008-09-04 10:06:59 +00:00
|
|
|
{
|
|
|
|
protected:
|
|
|
|
InspIRCd* ServerInstance;
|
|
|
|
public:
|
2008-09-04 11:03:58 +00:00
|
|
|
MutexFactory(InspIRCd* Instance);
|
2008-09-04 10:06:59 +00:00
|
|
|
Mutex* CreateMutex();
|
|
|
|
};
|
|
|
|
|
2008-02-10 14:32:02 +00:00
|
|
|
#endif
|