28ca7be add linear readme ca4b20f add linear readme 1133628 add linear readme 6a11676 update docs a607047 Update build.sh 2c1cfd8 complete yarn 4f28e32 change formater 2fbda81 fix stdin input 3258bcf checkin yarn master 67ebf81 allow setup from env variables 9b6bf57 fix hdfs 395d5c2 add make system 88ce767 refactor io, initial hdfs file access need test 19be870 chgs a1bd3c6 Merge branch 'master' of ssh://github.com/tqchen/rabit 1a573f9 introduce input split 29476f1 fix timer issue git-subtree-dir: subtree/rabit git-subtree-split: 28ca7becbdf6503e6b1398588a969efb164c9701
58 lines
1.3 KiB
C++
58 lines
1.3 KiB
C++
#ifndef RABIT_LEARN_IO_BUFFER_READER_INL_H_
|
|
#define RABIT_LEARN_IO_BUFFER_READER_INL_H_
|
|
/*!
|
|
* \file buffer_reader-inl.h
|
|
* \brief implementation of stream buffer reader
|
|
* \author Tianqi Chen
|
|
*/
|
|
#include "./io.h"
|
|
|
|
namespace rabit {
|
|
namespace io {
|
|
/*! \brief buffer reader of the stream that allows you to get */
|
|
class StreamBufferReader {
|
|
public:
|
|
StreamBufferReader(size_t buffer_size)
|
|
:stream_(NULL),
|
|
read_len_(1), read_ptr_(1) {
|
|
buffer_.resize(buffer_size);
|
|
}
|
|
/*!
|
|
* \brief set input stream
|
|
*/
|
|
inline void set_stream(IStream *stream) {
|
|
stream_ = stream;
|
|
read_len_ = read_ptr_ = 1;
|
|
}
|
|
/*!
|
|
* \brief allows quick read using get char
|
|
*/
|
|
inline char GetChar(void) {
|
|
while (true) {
|
|
if (read_ptr_ < read_len_) {
|
|
return buffer_[read_ptr_++];
|
|
} else {
|
|
read_len_ = stream_->Read(&buffer_[0], buffer_.length());
|
|
if (read_len_ == 0) return EOF;
|
|
read_ptr_ = 0;
|
|
}
|
|
}
|
|
}
|
|
inline bool AtEnd(void) const {
|
|
return read_len_ == 0;
|
|
}
|
|
|
|
private:
|
|
/*! \brief the underlying stream */
|
|
IStream *stream_;
|
|
/*! \brief buffer to hold data */
|
|
std::string buffer_;
|
|
/*! \brief length of valid data in buffer */
|
|
size_t read_len_;
|
|
/*! \brief pointer in the buffer */
|
|
size_t read_ptr_;
|
|
};
|
|
} // namespace io
|
|
} // namespace rabit
|
|
#endif // RABIT_LEARN_IO_BUFFER_READER_INL_H_
|