void TCPNetwork::RunCheckSelectClient(fd_set& read_set, fd_set& write_set, fd_set& exc_set)
	{
		int size = m_clientSessionPool.size();

		for (int i = 0; i < size; i++)
		{
			auto& cs = m_clientSessionPool[i];

			if (cs.IsConnected() == false)
			{
				continue;
			}

			SOCKET sock = cs.SocketFD;
			int sIdx = cs.Index;

			if (FD_ISSET(sock, &exc_set) == true)
			{
				CloseSession(SOCKET_CLOSE_CASE::SELECT_ERROR, sock, sIdx);
				continue;
			}

			auto ret = RunProcessReceive(sIdx, sock, read_set);
			if (ret == false)
			{
				continue;
			}

			ret = RunProcessWrite(sIdx, sock, write_set);
		} //end for loop
	}
Exemple #2
0
void TcpNetwork::RunCheckSelectClients(fd_set & exc_set, fd_set & read_set, fd_set & write_set)
{
	for (int i = 0; i < m_ClientSessionPool.size(); i++)
	{
		auto& session = m_ClientSessionPool[i];

		if (session.IsConnected() == false)
			continue;

		auto fd = session.SocketFD;
		auto sessionIndex = session.Index;

		//error check
		if (FD_ISSET(fd, &exc_set))
		{
			CloseSession(ServerConfig::SOCKET_CLOSE_CASE::SELECT_ERROR, fd, sessionIndex);
			continue;
		}

		//read check
		auto retRecieve = RunProcessReceive(sessionIndex, fd, read_set);
		if (retRecieve == false) //새로 받은 데이터가 없다면 write 과정에 들어가지 않음. 
			continue;

		//write check
		if (!FD_ISSET(fd, &write_set))
			continue;
		RunProcessWrite(sessionIndex, fd, write_set);
	}
}
	void TcpNetwork::RunCheckSelectClients(fd_set& exc_set, fd_set& read_set, fd_set& write_set)
	{
		for (int i = 0; i < m_ClientSessionPool.size(); ++i)
		{
			auto& session = m_ClientSessionPool[i];

			if (session.IsConnected() == false) {
				continue;
			}

			SOCKET fd = session.SocketFD;
			auto sessionIndex = session.Index;

			// check error
			if (FD_ISSET(fd, &exc_set))
			{
				CloseSession(SOCKET_CLOSE_CASE::SELECT_ERROR, fd, sessionIndex);
				continue;
			}

			// check read
			auto retReceive = RunProcessReceive(sessionIndex, fd, read_set);
			if (retReceive == false) {
				continue;
			}

			// check write
			RunProcessWrite(sessionIndex, fd, write_set);
		}
	}