Switch to single-threaded epoll-based operation

This commit is contained in:
Ian Gulliver
2019-05-04 07:21:52 +00:00
parent 87bc2c1611
commit ac0d3e2816
8 changed files with 95 additions and 45 deletions

View File

@@ -4,23 +4,11 @@ StreamBuffer::StreamBuffer(int sock, size_t size)
: Buffer(size),
sock_(sock) {}
bool StreamBuffer::BufferAtLeast(size_t len) {
CHECK_LE(start_ + len, size_);
while (ReadMaxLen() < len) {
auto read_len = read(sock_, WritePtr(), WriteMaxLen());
PCHECK(read_len >= 0);
if (read_len == 0) {
return false;
}
Wrote(read_len);
bool StreamBuffer::Refill() {
auto read_len = read(sock_, WritePtr(), WriteMaxLen());
if (read_len == 0) {
return false;
}
Wrote(read_len);
return true;
}
const char *StreamBuffer::Read(size_t len) {
if (!BufferAtLeast(len)) {
return nullptr;
}
return Buffer::Read(len);
}