char* CInConnection::receiveMessage(int& messageSize) { // Returns the data size if >0, 0=we had a read time out, -1=we have an error if (!_socketConnectWasOk) { messageSize=-1; // error return(NULL); } std::vector<char> receivedData; while (true) { std::vector<char> inDat; int result=_receiveSimplePacket(inDat); if (result<0) { messageSize=result+1; // error or read time-out return(NULL); } receivedData.insert(receivedData.end(),inDat.begin(),inDat.end()); if (result==0) { // success messageSize=int(receivedData.size()); char* retBuff=new char[messageSize]; for (int i=0;i<messageSize;i++) retBuff[i]=receivedData[i]; return(retBuff); } } }
char* CSocketOutConnection::receiveReplyData(int& dataSize) { // Returns the data size if >0, otherwise error if (_socketConn==(SOCKET)-1) { dataSize=-2; // error return(NULL); } std::vector<char> receivedData; while (true) { std::vector<char> inDat; int result=_receiveSimplePacket(inDat); if (result<0) { dataSize=0; // error return(NULL); } receivedData.insert(receivedData.end(),inDat.begin(),inDat.end()); if (result==0) { // success dataSize=int(receivedData.size()); char* retBuff=new char[dataSize]; for (int i=0;i<dataSize;i++) retBuff[i]=receivedData[i]; return(retBuff); } } }