/* */ #include "SocketRecvBuffer.h" #include #include "SocketCore.h" #include "LogFactory.h" namespace aria2 { SocketRecvBuffer::SocketRecvBuffer (const SharedHandle& socket, size_t capacity) : socket_(socket), capacity_(capacity), buf_(new unsigned char[capacity_]), bufLen_(0) {} SocketRecvBuffer::~SocketRecvBuffer() { delete [] buf_; } ssize_t SocketRecvBuffer::recv() { size_t len = capacity_-bufLen_; if(len > 0) { socket_->readData(buf_+bufLen_, len); bufLen_ += len; } else { A2_LOG_DEBUG("Buffer full"); } return len; } void SocketRecvBuffer::shiftBuffer(size_t offset) { assert(offset <= bufLen_); memmove(buf_, buf_+offset, bufLen_-offset); bufLen_ -= offset; } } // namespace aria2