summaryrefslogtreecommitdiff
path: root/src/BtBitfieldMessage.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2014-09-13 00:07:21 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2014-09-13 00:07:21 +0900
commit2807258279d8ddbef01ca1c20a87c14aa084620c (patch)
treee0baa98d1b2051898a4dbde0820ed81e6438fec4 /src/BtBitfieldMessage.cc
parentbee7a8317c602a37066a7b3391b5134f31e3a5ff (diff)
Use std::make_shared and make_unique where possible, part 1
Diffstat (limited to 'src/BtBitfieldMessage.cc')
-rw-r--r--src/BtBitfieldMessage.cc35
1 files changed, 16 insertions, 19 deletions
diff --git a/src/BtBitfieldMessage.cc b/src/BtBitfieldMessage.cc
index 0238c83a..ff801c85 100644
--- a/src/BtBitfieldMessage.cc
+++ b/src/BtBitfieldMessage.cc
@@ -48,34 +48,31 @@ namespace aria2 {
const char BtBitfieldMessage::NAME[] = "bitfield";
-BtBitfieldMessage::BtBitfieldMessage():SimpleBtMessage(ID, NAME),
- bitfield_(nullptr),
- bitfieldLength_(0)
+BtBitfieldMessage::BtBitfieldMessage()
+ : SimpleBtMessage(ID, NAME),
+ bitfieldLength_(0)
{}
BtBitfieldMessage::BtBitfieldMessage
-(const unsigned char* bitfield, size_t bitfieldLength):
- SimpleBtMessage(ID, NAME),
- bitfield_(nullptr),
- bitfieldLength_(0)
+(const unsigned char* bitfield, size_t bitfieldLength)
+ : SimpleBtMessage(ID, NAME),
+ bitfieldLength_(0)
{
setBitfield(bitfield, bitfieldLength);
}
BtBitfieldMessage::~BtBitfieldMessage()
-{
- delete [] bitfield_;
-}
+{}
void BtBitfieldMessage::setBitfield
(const unsigned char* bitfield, size_t bitfieldLength) {
- if(bitfield_ == bitfield) {
+ if(bitfield_.get() == bitfield) {
return;
}
- delete [] bitfield_;
+
bitfieldLength_ = bitfieldLength;
- bitfield_ = new unsigned char[bitfieldLength_];
- memcpy(bitfield_, bitfield, bitfieldLength_);
+ bitfield_ = make_unique<unsigned char[]>(bitfieldLength_);
+ memcpy(bitfield_.get(), bitfield, bitfieldLength_);
}
std::unique_ptr<BtBitfieldMessage>
@@ -92,9 +89,9 @@ void BtBitfieldMessage::doReceivedAction() {
if(isMetadataGetMode()) {
return;
}
- getPieceStorage()->updatePieceStats(bitfield_, bitfieldLength_,
+ getPieceStorage()->updatePieceStats(bitfield_.get(), bitfieldLength_,
getPeer()->getBitfield());
- getPeer()->setBitfield(bitfield_, bitfieldLength_);
+ getPeer()->setBitfield(bitfield_.get(), bitfieldLength_);
if(getPeer()->isSeeder() && getPieceStorage()->downloadFinished()) {
throw DL_ABORT_EX(MSG_GOOD_BYE_SEEDER);
}
@@ -108,9 +105,9 @@ unsigned char* BtBitfieldMessage::createMessage() {
* total: 5+bitfieldLength bytes
*/
const size_t msgLength = 5+bitfieldLength_;
- auto msg = new unsigned char[msgLength];
+ auto msg = new unsigned char[msgLength];
bittorrent::createPeerMessageString(msg, msgLength, 1+bitfieldLength_, ID);
- memcpy(msg+5, bitfield_, bitfieldLength_);
+ memcpy(msg+5, bitfield_.get(), bitfieldLength_);
return msg;
}
@@ -121,7 +118,7 @@ size_t BtBitfieldMessage::getMessageLength() {
std::string BtBitfieldMessage::toString() const {
std::string s = NAME;
s += " ";
- s += util::toHex(bitfield_, bitfieldLength_);
+ s += util::toHex(bitfield_.get(), bitfieldLength_);
return s;
}