Definition at line 603 of file Channel.h. References CTR_HEADER_SIZE, DATA_BUFFER_SIZE, HandleError(), ILOG_DEBUG, and mBuffer. Referenced by SendRequest(), and Serve(). 00604 { 00605 int rval; 00606 00607 // first recv CTR message to find out the number of bytes to expect 00608 ILOG_DEBUG("receiving..."); 00609 int nrToRecv = 0; 00610 int nrRecv = 0; 00611 char* bufPtr = mBuffer; 00612 int bufSize = DATA_BUFFER_SIZE + CTR_HEADER_SIZE; 00613 do 00614 { 00615 rval = recv(sock, bufPtr, bufSize-nrRecv, 0); 00616 if (rval == SOCKET_ERROR) 00617 { 00618 HandleError("RecvLarge", true); 00619 return -1; 00620 } 00621 if (rval == 0) 00622 { 00623 ILOG_DEBUG("recv got a 0 bytes message"); 00624 return 0; 00625 } 00626 if (nrToRecv == 0) 00627 { // read CTR header for number of bytes to receive 00628 sscanf(bufPtr, "CTR %d", &nrToRecv); 00629 ILOG_DEBUG("recv expects " << nrToRecv << " bytes" 00630 ); 00631 } 00632 ILOG_DEBUG(" recv " << rval << " bytes"); 00633 bufPtr += rval; 00634 nrRecv += rval; 00635 } 00636 while (nrRecv < nrToRecv); 00637 00638 ILOG_DEBUG("received " << nrRecv << " bytes"); 00639 if (nrRecv > nrToRecv) 00640 { 00641 HandleError("received MORE bytes than expected!", true); 00642 return -1; 00643 } 00644 return nrRecv; 00645 }
Here is the call graph for this function: ![]()
|