00001
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef _SOCKETHANDLEREP_H
00033 #define _SOCKETHANDLEREP_H
00034
00035 #include "SocketHandler.h"
00036 #ifdef LINUX
00037 #include <sys/epoll.h>
00038
00039 #define MAX_EVENTS_EP_WAIT 100
00040 #endif // LINUX
00041
00042 #ifdef SOCKETS_NAMESPACE
00043 namespace SOCKETS_NAMESPACE {
00044 #endif
00045
00046 class SocketHandlerEp : public SocketHandler
00047 {
00048 public:
00051 SocketHandlerEp(StdLog *log = NULL);
00052
00056 SocketHandlerEp(IMutex& mutex,StdLog *log = NULL);
00057
00058 SocketHandlerEp(IMutex&, ISocketHandler& parent, StdLog * = NULL);
00059
00060 ~SocketHandlerEp();
00061
00062 ISocketHandler *Create(StdLog * = NULL);
00063 ISocketHandler *Create(IMutex&, ISocketHandler&, StdLog * = NULL);
00064
00065 #ifdef LINUX
00066
00068 void ISocketHandler_Add(Socket *,bool bRead,bool bWrite);
00069 void ISocketHandler_Mod(Socket *,bool bRead,bool bWrite);
00070 void ISocketHandler_Del(Socket *);
00071
00072 size_t MaxCount() {
00073 return 10000;
00074 }
00075
00076 protected:
00078 int ISocketHandler_Select(struct timeval *);
00079 #endif // LINUX
00080
00081 private:
00082 int m_epoll;
00083 #ifdef LINUX
00084 struct epoll_event m_events[MAX_EVENTS_EP_WAIT];
00085
00086 #endif // LINUX
00087
00088 };
00089
00090
00091 #ifdef SOCKETS_NAMESPACE
00092 }
00093 #endif
00094
00095 #endif // _SOCKETHANDLEREP_H