log(DEBUG,"Add socket %d",fd);
#ifdef USE_EPOLL
struct epoll_event ev;
+ memset(&ev,0,sizeof(struct epoll_event));
log(DEBUG,"epoll: Add socket to events, ep=%d socket=%d",EngineHandle,fd);
readable ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
ev.data.fd = fd;
return true;
}
+bool SocketEngine::HasFd(int fd)
+{
+ if ((fd < 0) || (fd > MAX_DESCRIPTORS))
+ return false;
+ return (ref[fd] != 0);
+}
+
bool SocketEngine::DelFd(int fd)
{
log(DEBUG,"SocketEngine::DelFd(%d)",fd);
#endif
#ifdef USE_EPOLL
struct epoll_event ev;
+ memset(&ev,0,sizeof(struct epoll_event));
ref[fd] && X_READBIT ? ev.events = EPOLLIN : ev.events = EPOLLOUT;
ev.data.fd = fd;
int i = epoll_ctl(EngineHandle, EPOLL_CTL_DEL, fd, &ev);
}
tval.tv_sec = 0;
- tval.tv_usec = 100L;
+ tval.tv_usec = 50L;
sresult = select(FD_SETSIZE, &rfdset, &wfdset, NULL, &tval);
if (sresult > 0)
{
}
#endif
#ifdef USE_KQUEUE
- ts.tv_nsec = 10000L;
+ ts.tv_nsec = 5000L;
ts.tv_sec = 0;
int i = kevent(EngineHandle, NULL, 0, &ke_list[0], MAX_DESCRIPTORS, &ts);
for (int j = 0; j < i; j++)
fdlist[result++] = ke_list[j].ident;
#endif
#ifdef USE_EPOLL
- int i = epoll_wait(EngineHandle, events, MAX_DESCRIPTORS, 100);
+ int i = epoll_wait(EngineHandle, events, MAX_DESCRIPTORS, 50);
for (int j = 0; j < i; j++)
fdlist[result++] = events[j].data.fd;
#endif