summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-09-28 23:40:44 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2012-09-28 23:40:44 +0900
commit4b94ede268ff2ff793b22a0730dcbda09d280618 (patch)
tree7c5e98014e7a429e0a8b2e3ab840db83b59216b8
parent3258614033aaf8288dc4b14275c72a1bb3b65a7e (diff)
Return ExtensionMessage subclass create return raw pointer
-rw-r--r--src/DefaultExtensionMessageFactory.cc21
-rw-r--r--src/HandshakeExtensionMessage.cc4
-rw-r--r--src/HandshakeExtensionMessage.h2
-rw-r--r--src/UTPexExtensionMessage.cc4
-rw-r--r--src/UTPexExtensionMessage.h2
-rw-r--r--test/HandshakeExtensionMessageTest.cc19
-rw-r--r--test/UTPexExtensionMessageTest.cc10
7 files changed, 31 insertions, 31 deletions
diff --git a/src/DefaultExtensionMessageFactory.cc b/src/DefaultExtensionMessageFactory.cc
index 24f2c564..4f61e11a 100644
--- a/src/DefaultExtensionMessageFactory.cc
+++ b/src/DefaultExtensionMessageFactory.cc
@@ -78,11 +78,11 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
uint8_t extensionMessageID = *data;
if(extensionMessageID == 0) {
// handshake
- SharedHandle<HandshakeExtensionMessage> m =
+ HandshakeExtensionMessage* m =
HandshakeExtensionMessage::create(data, length);
m->setPeer(peer_);
m->setDownloadContext(dctx_);
- return m;
+ return SharedHandle<ExtensionMessage>(m);
} else {
const char* extensionName = registry_->getExtensionName(extensionMessageID);
if(!extensionName) {
@@ -92,10 +92,9 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
}
if(strcmp(extensionName, "ut_pex") == 0) {
// uTorrent compatible Peer-Exchange
- SharedHandle<UTPexExtensionMessage> m =
- UTPexExtensionMessage::create(data, length);
+ UTPexExtensionMessage* m = UTPexExtensionMessage::create(data, length);
m->setPeerStorage(peerStorage_);
- return m;
+ return SharedHandle<ExtensionMessage>(m);
} else if(strcmp(extensionName, "ut_metadata") == 0) {
if(length == 0) {
throw DL_ABORT_EX
@@ -120,14 +119,14 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
}
switch(msgType->i()) {
case 0: {
- SharedHandle<UTMetadataRequestExtensionMessage> m
+ UTMetadataRequestExtensionMessage* m
(new UTMetadataRequestExtensionMessage(extensionMessageID));
m->setIndex(index->i());
m->setDownloadContext(dctx_);
m->setPeer(peer_);
m->setBtMessageFactory(messageFactory_);
m->setBtMessageDispatcher(dispatcher_);
- return m;
+ return SharedHandle<ExtensionMessage>(m);
}
case 1: {
if(end == length) {
@@ -137,7 +136,7 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
if(!totalSize) {
throw DL_ABORT_EX("Bad ut_metadata data: total_size not found");
}
- SharedHandle<UTMetadataDataExtensionMessage> m
+ UTMetadataDataExtensionMessage* m
(new UTMetadataDataExtensionMessage(extensionMessageID));
m->setIndex(index->i());
m->setTotalSize(totalSize->i());
@@ -145,14 +144,14 @@ DefaultExtensionMessageFactory::createMessage(const unsigned char* data, size_t
m->setUTMetadataRequestTracker(tracker_);
m->setPieceStorage(dctx_->getOwnerRequestGroup()->getPieceStorage());
m->setDownloadContext(dctx_);
- return m;
+ return SharedHandle<ExtensionMessage>(m);
}
case 2: {
- SharedHandle<UTMetadataRejectExtensionMessage> m
+ UTMetadataRejectExtensionMessage* m
(new UTMetadataRejectExtensionMessage(extensionMessageID));
m->setIndex(index->i());
// No need to inject tracker because peer will be disconnected.
- return m;
+ return SharedHandle<ExtensionMessage>(m);
}
default:
throw DL_ABORT_EX
diff --git a/src/HandshakeExtensionMessage.cc b/src/HandshakeExtensionMessage.cc
index d9f13f23..df2d23c5 100644
--- a/src/HandshakeExtensionMessage.cc
+++ b/src/HandshakeExtensionMessage.cc
@@ -164,7 +164,7 @@ uint8_t HandshakeExtensionMessage::getExtensionMessageID(int key) const
return extreg_.getExtensionMessageID(key);
}
-SharedHandle<HandshakeExtensionMessage>
+HandshakeExtensionMessage*
HandshakeExtensionMessage::create(const unsigned char* data, size_t length)
{
if(length < 1) {
@@ -172,7 +172,6 @@ HandshakeExtensionMessage::create(const unsigned char* data, size_t length)
(fmt(MSG_TOO_SMALL_PAYLOAD_SIZE,
EXTENSION_NAME, static_cast<unsigned long>(length)));
}
- SharedHandle<HandshakeExtensionMessage> msg(new HandshakeExtensionMessage());
A2_LOG_DEBUG(fmt("Creating HandshakeExtensionMessage from %s",
util::percentEncode(data, length).c_str()));
SharedHandle<ValueBase> decoded = bencode2::decode(data+1, length - 1);
@@ -181,6 +180,7 @@ HandshakeExtensionMessage::create(const unsigned char* data, size_t length)
throw DL_ABORT_EX
("Unexpected payload format for extended message handshake");
}
+ HandshakeExtensionMessage* msg(new HandshakeExtensionMessage());
const Integer* port = downcast<Integer>(dict->get("p"));
if(port && 0 < port->i() && port->i() < 65536) {
msg->tcpPort_ = port->i();
diff --git a/src/HandshakeExtensionMessage.h b/src/HandshakeExtensionMessage.h
index 16f11dda..3c1c2e55 100644
--- a/src/HandshakeExtensionMessage.h
+++ b/src/HandshakeExtensionMessage.h
@@ -125,7 +125,7 @@ public:
void setPeer(const SharedHandle<Peer>& peer);
- static SharedHandle<HandshakeExtensionMessage>
+ static HandshakeExtensionMessage*
create(const unsigned char* data, size_t dataLength);
};
diff --git a/src/UTPexExtensionMessage.cc b/src/UTPexExtensionMessage.cc
index 1aa6b34b..3de9e8fc 100644
--- a/src/UTPexExtensionMessage.cc
+++ b/src/UTPexExtensionMessage.cc
@@ -181,7 +181,7 @@ void UTPexExtensionMessage::setPeerStorage
peerStorage_ = peerStorage;
}
-SharedHandle<UTPexExtensionMessage>
+UTPexExtensionMessage*
UTPexExtensionMessage::create(const unsigned char* data, size_t len)
{
if(len < 1) {
@@ -189,7 +189,7 @@ UTPexExtensionMessage::create(const unsigned char* data, size_t len)
EXTENSION_NAME,
static_cast<unsigned long>(len)));
}
- SharedHandle<UTPexExtensionMessage> msg(new UTPexExtensionMessage(*data));
+ UTPexExtensionMessage* msg(new UTPexExtensionMessage(*data));
SharedHandle<ValueBase> decoded = bencode2::decode(data+1, len - 1);
const Dict* dict = downcast<Dict>(decoded);
diff --git a/src/UTPexExtensionMessage.h b/src/UTPexExtensionMessage.h
index c59dfb51..3f273bf6 100644
--- a/src/UTPexExtensionMessage.h
+++ b/src/UTPexExtensionMessage.h
@@ -111,7 +111,7 @@ public:
void setPeerStorage(const SharedHandle<PeerStorage>& peerStorage);
- static SharedHandle<UTPexExtensionMessage>
+ static UTPexExtensionMessage*
create(const unsigned char* data, size_t len);
void setMaxFreshPeer(size_t maxFreshPeer);
diff --git a/test/HandshakeExtensionMessageTest.cc b/test/HandshakeExtensionMessageTest.cc
index eea01d21..03c9cb72 100644
--- a/test/HandshakeExtensionMessageTest.cc
+++ b/test/HandshakeExtensionMessageTest.cc
@@ -136,11 +136,12 @@ void HandshakeExtensionMessageTest::testDoReceivedAction()
void HandshakeExtensionMessageTest::testCreate()
{
- std::string in =
+ std::string in =
"0d1:pi6881e1:v5:aria21:md5:a2dhti2e6:ut_pexi1ee13:metadata_sizei1024ee";
- SharedHandle<HandshakeExtensionMessage> m =
- HandshakeExtensionMessage::create(reinterpret_cast<const unsigned char*>(in.c_str()),
- in.size());
+ SharedHandle<HandshakeExtensionMessage> m
+ (HandshakeExtensionMessage::create
+ (reinterpret_cast<const unsigned char*>(in.c_str()),
+ in.size()));
CPPUNIT_ASSERT_EQUAL(std::string("aria2"), m->getClientVersion());
CPPUNIT_ASSERT_EQUAL((uint16_t)6881, m->getTCPPort());
CPPUNIT_ASSERT_EQUAL((uint8_t)1,
@@ -173,16 +174,16 @@ void HandshakeExtensionMessageTest::testCreate()
CPPUNIT_FAIL("exception must be thrown.");
} catch(Exception& e) {
std::cerr << e.stackTrace() << std::endl;
- }
+ }
}
void HandshakeExtensionMessageTest::testCreate_stringnum()
{
std::string in = "0d1:p4:68811:v5:aria21:md6:ut_pex1:1ee";
- SharedHandle<HandshakeExtensionMessage> m =
- HandshakeExtensionMessage::create
- (reinterpret_cast<const unsigned char*>(in.c_str()),
- in.size());
+ SharedHandle<HandshakeExtensionMessage> m
+ (HandshakeExtensionMessage::create
+ (reinterpret_cast<const unsigned char*>(in.c_str()),
+ in.size()));
CPPUNIT_ASSERT_EQUAL(std::string("aria2"), m->getClientVersion());
// port number in string is not allowed
CPPUNIT_ASSERT_EQUAL((uint16_t)0, m->getTCPPort());
diff --git a/test/UTPexExtensionMessageTest.cc b/test/UTPexExtensionMessageTest.cc
index fe67d3ab..422caffb 100644
--- a/test/UTPexExtensionMessageTest.cc
+++ b/test/UTPexExtensionMessageTest.cc
@@ -202,10 +202,10 @@ void UTPexExtensionMessageTest::testCreate()
"7:dropped12:"+std::string(&c3[0], &c3[6])+std::string(&c4[0], &c4[6])+
"8:dropped618:"+std::string(&c6[0], &c6[COMPACT_LEN_IPV6])+
"e";
-
- SharedHandle<UTPexExtensionMessage> msg =
- UTPexExtensionMessage::create
- (reinterpret_cast<const unsigned char*>(data.c_str()), data.size());
+
+ SharedHandle<UTPexExtensionMessage> msg
+ (UTPexExtensionMessage::create
+ (reinterpret_cast<const unsigned char*>(data.c_str()), data.size()));
CPPUNIT_ASSERT_EQUAL((uint8_t)1, msg->getExtensionMessageID());
CPPUNIT_ASSERT_EQUAL((size_t)3, msg->getFreshPeers().size());
CPPUNIT_ASSERT_EQUAL(std::string("192.168.0.1"),
@@ -238,7 +238,7 @@ void UTPexExtensionMessageTest::testCreate()
CPPUNIT_FAIL("exception must be thrown.");
} catch(Exception& e) {
std::cerr << e.stackTrace() << std::endl;
- }
+ }
}
void UTPexExtensionMessageTest::testAddFreshPeer()