34 , m_bufferSize(bufferSize)
36 BOOST_ASSERT(bufferSize > 0);
40 StreamSource::doPump()
42 BOOST_ASSERT(
m_next !=
nullptr);
44 std::vector<uint8_t> buffer(m_bufferSize);
45 size_t dataOffset = 0;
48 while (dataLen > 0 || !m_is.eof()) {
51 size_t nBytesWritten =
m_next->write(&buffer[dataOffset], dataLen);
53 dataOffset += nBytesWritten;
54 dataLen -= nBytesWritten;
57 BOOST_THROW_EXCEPTION(Error(
getIndex(),
"Input stream in bad state"));
59 else if (m_is.good()) {
60 m_is.read(reinterpret_cast<char*>(&buffer.front()), buffer.size());
62 dataLen = m_is.gcount();
Copyright (c) 2013-2016 Regents of the University of California.