Sender::Sender(QString host,int port) { connection = 0; //connect sock=new QTcpSocket(this); connect(sock,SIGNAL(connected()),this,SLOT(connSock())); connect(sock,SIGNAL(disconnected()),this,SLOT(dconSock())); connect(sock,SIGNAL(error(QAbstractSocket::SocketError)),this,SLOT(dconSock())); connect(sock,SIGNAL(readyRead()),this,SLOT(readSock())); sock->connectToHost(host,port); qDebug("connected???"); }
//when the read event arrive, accept a connecton, //create a ConcreteAgent and initialize it int TCPListenAgent::recvData(void) { SocketAddress oppositeAddr; int connfd; connfd = m_TCPListenSocket.acceptConnection(oppositeAddr); if(connfd < 0) { if(!((errno == EINTR) || (errno == EWOULDBLOCK)) ) { LOG_ERROR("TCPListenAgent listen"); return FAILED; } } TCPSocket connSock(connfd); if(connSock.setNonblock()<0 || connSock.disableLinger()<0 || connSock.disableNagle()<0) { LOG_ERROR("TCPListenAgent::recvData"); connSock.closeSocket(); return FAILED; } //resigerREvent and initialize the Agent's member TCPAgent* agent = (AgentManager::instance()).createAgent(connSock,oppositeAddr,m_epoll); if(NULL == agent) { LOG_ERROR("Agent manager create agent error !"); connSock.closeSocket(); return SUCCESSFUL; } if(agent->init(&(this->op)) != SUCCESSFUL) { LOG_ERROR("init agent operations error !"); (AgentManager::instance()).recyclerAgent(agent); return SUCCESSFUL; } agent->connectAfter(true); return SUCCESSFUL; }