Switch to single-threaded epoll-based operation
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user