mirror of https://github.com/aria2/aria2
SocketRecvBuffer: Cleanup with C++11 features
parent
0aac49d55e
commit
aff92b5115
|
@ -39,28 +39,27 @@
|
||||||
|
|
||||||
#include "SocketCore.h"
|
#include "SocketCore.h"
|
||||||
#include "LogFactory.h"
|
#include "LogFactory.h"
|
||||||
|
#include "a2functional.h"
|
||||||
|
|
||||||
namespace aria2 {
|
namespace aria2 {
|
||||||
|
|
||||||
SocketRecvBuffer::SocketRecvBuffer
|
SocketRecvBuffer::SocketRecvBuffer
|
||||||
(const std::shared_ptr<SocketCore>& socket,
|
(std::shared_ptr<SocketCore> socket,
|
||||||
size_t capacity)
|
size_t capacity)
|
||||||
: socket_(socket),
|
: socket_(std::move(socket)),
|
||||||
capacity_(capacity),
|
capacity_(capacity),
|
||||||
buf_(new unsigned char[capacity_]),
|
buf_(make_unique<unsigned char[]>(capacity_)),
|
||||||
bufLen_(0)
|
bufLen_(0)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
SocketRecvBuffer::~SocketRecvBuffer()
|
SocketRecvBuffer::~SocketRecvBuffer()
|
||||||
{
|
{}
|
||||||
delete [] buf_;
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t SocketRecvBuffer::recv()
|
ssize_t SocketRecvBuffer::recv()
|
||||||
{
|
{
|
||||||
size_t len = capacity_ - bufLen_;
|
size_t len = capacity_ - bufLen_;
|
||||||
if(len > 0) {
|
if(len > 0) {
|
||||||
socket_->readData(buf_+bufLen_, len);
|
socket_->readData(buf_.get() + bufLen_, len);
|
||||||
bufLen_ += len;
|
bufLen_ += len;
|
||||||
} else {
|
} else {
|
||||||
A2_LOG_DEBUG("Buffer full");
|
A2_LOG_DEBUG("Buffer full");
|
||||||
|
@ -71,7 +70,7 @@ ssize_t SocketRecvBuffer::recv()
|
||||||
void SocketRecvBuffer::shiftBuffer(size_t offset)
|
void SocketRecvBuffer::shiftBuffer(size_t offset)
|
||||||
{
|
{
|
||||||
assert(offset <= bufLen_);
|
assert(offset <= bufLen_);
|
||||||
memmove(buf_, buf_+offset, bufLen_-offset);
|
memmove(buf_.get(), buf_.get() + offset, bufLen_ - offset);
|
||||||
bufLen_ -= offset;
|
bufLen_ -= offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -46,7 +46,7 @@ class SocketCore;
|
||||||
class SocketRecvBuffer {
|
class SocketRecvBuffer {
|
||||||
public:
|
public:
|
||||||
SocketRecvBuffer
|
SocketRecvBuffer
|
||||||
(const std::shared_ptr<SocketCore>& socket,
|
(std::shared_ptr<SocketCore> socket,
|
||||||
size_t capacity = 16*1024);
|
size_t capacity = 16*1024);
|
||||||
~SocketRecvBuffer();
|
~SocketRecvBuffer();
|
||||||
// Reads data from socket as much as capacity allows. Returns the
|
// Reads data from socket as much as capacity allows. Returns the
|
||||||
|
@ -68,7 +68,7 @@ public:
|
||||||
|
|
||||||
const unsigned char* getBuffer() const
|
const unsigned char* getBuffer() const
|
||||||
{
|
{
|
||||||
return buf_;
|
return buf_.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t getBufferLength() const
|
size_t getBufferLength() const
|
||||||
|
@ -85,7 +85,7 @@ public:
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<SocketCore> socket_;
|
std::shared_ptr<SocketCore> socket_;
|
||||||
size_t capacity_;
|
size_t capacity_;
|
||||||
unsigned char* buf_;
|
std::unique_ptr<unsigned char[]> buf_;
|
||||||
size_t bufLen_;
|
size_t bufLen_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue