diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-09-28 23:40:44 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2012-09-28 23:40:44 +0900 |
| commit | 4b94ede268ff2ff793b22a0730dcbda09d280618 (patch) | |
| tree | 7c5e98014e7a429e0a8b2e3ab840db83b59216b8 /src/DefaultExtensionMessageFactory.cc | |
| parent | 3258614033aaf8288dc4b14275c72a1bb3b65a7e (diff) | |
Return ExtensionMessage subclass create return raw pointer
Diffstat (limited to 'src/DefaultExtensionMessageFactory.cc')
| -rw-r--r-- | src/DefaultExtensionMessageFactory.cc | 21 |
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 |
