Files
firebuf/stream_buffer.cc

28 lines
534 B
C++
Raw Permalink Normal View History

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