summaryrefslogtreecommitdiff
path: root/src/DefaultExtensionMessageFactory.cc
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 /src/DefaultExtensionMessageFactory.cc
parent3258614033aaf8288dc4b14275c72a1bb3b65a7e (diff)
Return ExtensionMessage subclass create return raw pointer
Diffstat (limited to 'src/DefaultExtensionMessageFactory.cc')
-rw-r--r--src/DefaultExtensionMessageFactory.cc21
1 files changed, 10 insertions, 11 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