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 | |
| parent | 3258614033aaf8288dc4b14275c72a1bb3b65a7e (diff) | |
Return ExtensionMessage subclass create return raw pointer
Diffstat (limited to 'src')
| -rw-r--r-- | src/DefaultExtensionMessageFactory.cc | 21 | ||||
| -rw-r--r-- | src/HandshakeExtensionMessage.cc | 4 | ||||
| -rw-r--r-- | src/HandshakeExtensionMessage.h | 2 | ||||
| -rw-r--r-- | src/UTPexExtensionMessage.cc | 4 | ||||
| -rw-r--r-- | src/UTPexExtensionMessage.h | 2 |
5 files changed, 16 insertions, 17 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); |
