All pastes #635323 Raw Edit

Someone

public text v1 · immutable
#635323 ·published 2007-07-27 00:15 UTC
rendered paste body
	char buf[2000];
	DataHolder DataForServer;
	DataHolder DataForClient;
	while(true)
	{
		// Get the data from the client to the server
		while(true)
		{
			ret = recv(contoclient.socket, buf, sizeof(buf), 0);
			if(ret == SOCKET_ERROR)
			{
				ret = WSAGetLastError();
				if(ret != WSAEWOULDBLOCK)
					throw ZStarsLib::CException("ConToClient error (recv)");
				break;
			}
			else
			{
				DataForServer.bb.append(buf, ret);
			}
		}


		// Send the pending data to the server
		while(DataForServer.bb.length())
		{
			ret = send(contoserver.socket, DataForServer.bb.contents(), 
				DataForServer.bb.length(), 0);
			if(ret == SOCKET_ERROR)
			{
				ret = WSAGetLastError();
				if(ret != WSAEWOULDBLOCK)
					throw ZStarsLib::CException("ConToServer error (send)");
				Sleep(5);
			}
			else
			{
				ByteBuffer bb;
				char * data = DataForServer.bb.contents();
				data += ret;
				if(DataForServer.bb.length() - ret)
					bb.append(data, DataForServer.bb.length() - ret);
				DataForServer.bb = bb;
			}
		}


		// Get the data from the server to the client
		while(true)
		{
			ret = recv(contoserver.socket, buf, sizeof(buf), 0);
			if(ret == SOCKET_ERROR)
			{
				ret = WSAGetLastError();
				if(ret != WSAEWOULDBLOCK)
					throw ZStarsLib::CException("ConToServer error (recv)");
				break;
			}
			else
			{
				DataForClient.bb.append(buf, ret);
			}
		}

		// Send the pending data to the client
		while(DataForClient.bb.length())
		{
			ret = send(contoclient.socket, DataForClient.bb.contents(), 
				DataForClient.bb.length(), 0);
			if(ret == SOCKET_ERROR)
			{
				ret = WSAGetLastError();
				if(ret != WSAEWOULDBLOCK)
					throw ZStarsLib::CException("ConToClient error (send)");
				Sleep(5);
			}
			else
			{
				ByteBuffer bb;
				char * data = DataForClient.bb.contents();
				data += ret;
				if(DataForClient.bb.length() - ret)
					bb.append(data, DataForClient.bb.length() - ret);
				DataForClient.bb = bb;
			}
		}

		Sleep(5);
	}