Files
DBService/ComposeService/EpollThread.h
T
2026-07-09 11:27:59 +08:00

61 lines
1.0 KiB
C++

#include <sys/socket.h>
#include <list>
#include "thread.h"
#define DATA_BUFSIZE 8192
#define MAX_THREAD_NUM 10
using namespace std;
typedef unsigned int SOCKET;
typedef struct{
SOCKET socket;
char buffer[DATA_BUFSIZE];
int buffsize;
} RECVBUFF;
typedef list<RECVBUFF*> RECVBUFFLIST;
class EpollHandler
{
class HandlerThread : public CThread //inside class
{
private:
EpollHandler* m_pHandler;
CSema* m_pSema;
public:
HandlerThread(EpollHandler* pHandler, CSema* pSema);
virtual void Main();
};
private:
RECVBUFFLIST m_lstBuff;
HandlerThread* m_lstThreads[MAX_THREAD_NUM];
CSema m_smProcess;
CSema m_smBuffers;
public:
EpollHandler();
~EpollHandler();
void AddBuff(RECVBUFF*);
RECVBUFF* GetBuff();
void Terminate();
};
class EpollThread : public CThread
{
private:
EpollHandler* m_pHandler;
int m_fdPipe[2];
bool SetNoBlock(int fd);
public:
EpollThread();
~EpollThread();
virtual void Main();
virtual void Terminate();
};