本文整理汇总了C++中TaskPtr::Terminate方法的典型用法代码示例。如果您正苦于以下问题:C++ TaskPtr::Terminate方法的具体用法?C++ TaskPtr::Terminate怎么用?C++ TaskPtr::Terminate使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TaskPtr
的用法示例。
在下文中一共展示了TaskPtr::Terminate方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AcceptTask
void tconn::AcceptTask()
{
struct sockaddr_in clientaddr;
socklen_t Len=sizeof(clientaddr);
memset(&clientaddr,0,sizeof(clientaddr));
while(true)
{
int sock=accept(sockfd,(struct sockaddr*)&clientaddr,&Len);
if(sock<0)
{
if(errno==EAGAIN)
break;
WARN("accept fail|%d|%s",errno,strerror(errno));
break;
}
if(!MakeNonBlocking(sock))
return;
int iNodely=1;
if(-1==setsockopt(sock,SOL_TCP,TCP_NODELAY,&iNodely,sizeof(iNodely)))
{
ERROR("setsockopt failed|%d%s",errno,strerror(errno));
return;
}
int cbuffsize=4*32768;
DEBUG("trace");
if(setsockopt(sock,SOL_SOCKET,SO_SNDBUF,(void*)&cbuffsize,sizeof(cbuffsize))==-1)
{
WARN("set sendbuff size fail|%d|%s",errno,strerror(errno));
return;
}
if(setsockopt(sock,SOL_TCP,SO_RCVBUF,(void*)&cbuffsize,sizeof(cbuffsize))==-1)
{
WARN("set recvbuff size failed|%d|%s",errno,strerror(errno));
return;
}
unsigned int cpos=++curpos;
INFO("new client connect,pos:%d",cpos);
TaskPtr task;
task.reset(new Task(cpos,sock,epollfd));
struct epoll_event event;
event.data.u32=cpos;
event.events=(EPOLLIN|EPOLLRDHUP|EPOLLERR|EPOLLRDHUP|EPOLLET);
if(epoll_ctl(epollfd,EPOLL_CTL_ADD,sock,&event)!=0)
{
ERROR("epoll add failed,%d|%s",errno,strerror(errno));
return ;
}
INFO("new client socket add epoll success");
if(objtaskmap.insert(std::make_pair(cpos,task)).second==false)
{
ERROR("add task map failed,pos:%d",cpos);
task->Terminate();
return;
}
INFO("add task map success,pos:%d",cpos);
}
INFO("add map success");
}