소스 검색

SocketRecvBuffer: Cleanup with C++11 features

Tatsuhiro Tsujikawa 11 년 전
부모
커밋
aff92b5115
2개의 변경된 파일11개의 추가작업 그리고 12개의 파일을 삭제
  1. 8 9
      src/SocketRecvBuffer.cc
  2. 3 3
      src/SocketRecvBuffer.h

+ 8 - 9
src/SocketRecvBuffer.cc

@@ -39,28 +39,27 @@
 
 #include "SocketCore.h"
 #include "LogFactory.h"
+#include "a2functional.h"
 
 namespace aria2 {
 
 SocketRecvBuffer::SocketRecvBuffer
-(const std::shared_ptr<SocketCore>& socket,
+(std::shared_ptr<SocketCore> socket,
  size_t capacity)
-  : socket_(socket),
+  : socket_(std::move(socket)),
     capacity_(capacity),
-    buf_(new unsigned char[capacity_]),
+    buf_(make_unique<unsigned char[]>(capacity_)),
     bufLen_(0)
 {}
 
 SocketRecvBuffer::~SocketRecvBuffer()
-{
-  delete [] buf_;
-}
+{}
 
 ssize_t SocketRecvBuffer::recv()
 {
-  size_t len = capacity_-bufLen_;
+  size_t len = capacity_ - bufLen_;
   if(len > 0) {
-    socket_->readData(buf_+bufLen_, len);
+    socket_->readData(buf_.get() + bufLen_, len);
     bufLen_ += len;
   } else {
     A2_LOG_DEBUG("Buffer full");
@@ -71,7 +70,7 @@ ssize_t SocketRecvBuffer::recv()
 void SocketRecvBuffer::shiftBuffer(size_t offset)
 {
   assert(offset <= bufLen_);
-  memmove(buf_, buf_+offset, bufLen_-offset);
+  memmove(buf_.get(), buf_.get() + offset, bufLen_ - offset);
   bufLen_ -= offset;
 }
 

+ 3 - 3
src/SocketRecvBuffer.h

@@ -46,7 +46,7 @@ class SocketCore;
 class SocketRecvBuffer {
 public:
   SocketRecvBuffer
-  (const std::shared_ptr<SocketCore>& socket,
+  (std::shared_ptr<SocketCore> socket,
    size_t capacity = 16*1024);
   ~SocketRecvBuffer();
   // Reads data from socket as much as capacity allows. Returns the
@@ -68,7 +68,7 @@ public:
 
   const unsigned char* getBuffer() const
   {
-    return buf_;
+    return buf_.get();
   }
 
   size_t getBufferLength() const
@@ -85,7 +85,7 @@ public:
 private:
   std::shared_ptr<SocketCore> socket_;
   size_t capacity_;
-  unsigned char* buf_;
+  std::unique_ptr<unsigned char[]> buf_;
   size_t bufLen_;
 };