Home || Visual Search || Applications || Architecture || Important Messages || OGL || Src

virtual Int64 Impala::Util::IOBufferChannel::Read ( void *  buf,
Int64  bytesToRead 
) [inline, virtual]

returns number of bytes read

Reimplemented from Impala::Util::IOBuffer.

Definition at line 76 of file IOBufferChannel.h.

References Impala::Util::Channel::Buffer(), Impala::Util::Channel::DATA_BUFFER_SIZE, Impala::Util::IOBuffer::GetPosition(), Impala::Util::Channel::LastSendHadError(), mId, mMyChannel, Impala::Util::Channel::SendRequest(), and SetPosition().

Referenced by DoNativeTypeRead(), Impala::Util::FileCopyRemoteToLocal(), Gets(), and ReadLine().

00077     {
00078         char* chBuf = mMyChannel->Buffer();
00079         Int64 nrRead = 0;
00080         char* bufPtr = (char*) buf;
00081         while (nrRead < bytesToRead)
00082         {
00083             int nrData = Min<Int64>(Channel::DATA_BUFFER_SIZE, 
00084                                     bytesToRead - nrRead);
00085             sprintf(chBuf, "readfilebuffer %d %d\0", mId, nrData);
00086             int len = mMyChannel->SendRequest(strlen(chBuf)+1);
00087             if (mMyChannel->LastSendHadError())
00088                 return 0;
00089             memcpy(bufPtr + nrRead, chBuf, len);
00090             if (len == 0)
00091                 break;
00092             nrRead += len;
00093         }
00094         SetPosition(GetPosition() + nrRead);
00095         return nrRead;
00096     }

Here is the call graph for this function:


Generated on Thu Jan 13 09:24:15 2011 for ImpalaSrc by  doxygen 1.5.1