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