Files
firebuf/stream_buffer.cc

30 lines
513 B
C++
Raw Normal View History

2019-05-04 23:21:11 -07:00
#include "stream_buffer.h"
namespace firebuf {
StreamBuffer::StreamBuffer(int sock, size_t size)
: Buffer(size),
sock_(sock) {}
bool StreamBuffer::Refill() {
2019-05-09 19:19:15 -07:00
if (WriteMaxLen() == 0) {
LOG(ERROR) << "buffer full";
return false;
}
2019-05-04 23:21:11 -07:00
auto read_len = read(sock_, WritePtr(), WriteMaxLen());
if (read_len == -1) {
if (errno == EINTR) {
return true;
}
PLOG(ERROR) << "read()";
return false;
}
2019-05-04 23:21:11 -07:00
if (read_len == 0) {
return false;
}
Wrote(read_len);
return true;
}
} // namespace firebuf