3,881
社区成员
发帖
与我相关
我的任务
分享
void io_callback(LoopHandle loop, CBHandle w, int revents)
{
SOCKET fd = w->fd;
#ifdef LWDP_PLATFORM_DEF_WIN32
fd = _get_osfhandle (w->fd);
#endif
struct sockaddr_in addr;
int addr_size = sizeof(addr);
int* accept_conn = (int*)malloc(sizeof(int));
while ((*accept_conn = accept(fd, (struct sockaddr *)&addr, &addr_size)) < 0)
{
if (errno == EAGAIN)
{
//these are transient, so don't log anything.
continue;
}
else
{
LWDP_LOG_PRINT("TCPSERVER", LWDP_LOG_MGR::ERR,
"Accept Error.");
return;
}
}
pthread_t t;
int result;
result = pthread_create(&t, NULL, thread_callback, accept_conn);
if(result != 0){
LWDP_LOG_PRINT("TCPSERVER", LWDP_LOG_MGR::ERR,
"Can't Create Thread Ret: %d\n", result);
return;
}
result = pthread_detach(t);
if(result != 0){
LWDP_LOG_PRINT("TCPSERVER", LWDP_LOG_MGR::ERR,
"Can't Detach Thread Ret: %d\n", result);
return;
}
}