From 8ba97188ce42be38b5427e9bd70bb7f5ba8238f9 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Fri, 18 Jun 2010 14:47:09 +0000 Subject: 2010-06-18 Tatsuhiro Tsujikawa Introduced ValueBase class, which is a replacement of BDE. In this change ValueBase is used instead of BDE except DHT messages, UTMetadata messages and XML-RPC. They'll be replaced in the later commits. DownloadContext::_attrs is now ContextAttribute rather than BDE. * src/ActivePeerConnectionCommand.cc * src/AnnounceList.cc * src/AnnounceList.h * src/BtDependency.cc * src/BtRegistry.cc * src/BtSetup.cc * src/ConsoleStatCalc.cc * src/ContextAttribute.h * src/DefaultBtAnnounce.cc * src/DefaultBtInteractive.cc * src/DownloadContext.cc * src/DownloadContext.h * src/HandshakeExtensionMessage.cc * src/InitiateConnectionCommand.cc * src/LpdReceiveMessageCommand.cc * src/MSEHandshake.cc * src/Makefile.am * src/Makefile.in * src/PeerInteractionCommand.cc * src/PeerListProcessor.h * src/ProtocolDetector.cc * src/RequestGroup.cc * src/RequestGroupMan.cc * src/TorrentAttribute.h * src/TrackerWatcherCommand.cc * src/UTMetadataDataExtensionMessage.cc * src/UTMetadataPostDownloadHandler.cc * src/UTMetadataRequestExtensionMessage.cc * src/ValueBase.cc * src/ValueBase.h * src/XmlRpcMethodImpl.cc * src/XmlRpcMethodImpl.h * src/bencode2.cc * src/bencode2.h * src/bittorrent_helper.cc * src/bittorrent_helper.h * src/download_helper.cc * src/magnet.cc * src/magnet.h * test/AnnounceListTest.cc * test/Bencode2Test.cc * test/BencodeTest.cc * test/BittorrentHelperTest.cc * test/BtDependencyTest.cc * test/BtRegistryTest.cc * test/DefaultBtAnnounceTest.cc * test/DefaultBtProgressInfoFileTest.cc * test/HandshakeExtensionMessageTest.cc * test/MSEHandshakeTest.cc * test/MagnetTest.cc * test/Makefile.am * test/Makefile.in * test/RequestGroupManTest.cc * test/UTMetadataDataExtensionMessageTest.cc * test/UTMetadataPostDownloadHandlerTest.cc * test/UTMetadataRequestExtensionMessageTest.cc * test/ValueBaseTest.cc * test/XmlRpcMethodTest.cc --- src/HandshakeExtensionMessage.cc | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/HandshakeExtensionMessage.cc') diff --git a/src/HandshakeExtensionMessage.cc b/src/HandshakeExtensionMessage.cc index 00763c65..20a3e2fb 100644 --- a/src/HandshakeExtensionMessage.cc +++ b/src/HandshakeExtensionMessage.cc @@ -110,21 +110,21 @@ void HandshakeExtensionMessage::doReceivedAction() const std::map::value_type& vt = *itr; _peer->setExtension(vt.first, vt.second); } - BDE& attrs = _dctx->getAttribute(bittorrent::BITTORRENT); - if(!attrs.containsKey(bittorrent::METADATA) && - !_peer->getExtensionMessageID("ut_metadata")) { + SharedHandle attrs = + bittorrent::getTorrentAttrs(_dctx); + if(attrs->metadata.empty() && !_peer->getExtensionMessageID("ut_metadata")) { // TODO In metadataGetMode, if peer don't support metadata // transfer, should we drop connection? There is a possibility // that peer can still tell us peers using PEX. throw DL_ABORT_EX("Peer doesn't support ut_metadata extension. Goodbye."); } if(_metadataSize > 0) { - if(attrs.containsKey(bittorrent::METADATA_SIZE)) { - if(_metadataSize != (size_t)attrs[bittorrent::METADATA_SIZE].i()) { + if(attrs->metadataSize) { + if(_metadataSize != attrs->metadataSize) { throw DL_ABORT_EX("Wrong metadata_size. Which one is correct!?"); } } else { - attrs[bittorrent::METADATA_SIZE] = _metadataSize; + attrs->metadataSize = _metadataSize; _dctx->getFirstFileEntry()->setLength(_metadataSize); _dctx->markTotalLengthIsKnown(); _dctx->getOwnerRequestGroup()->initPieceStorage(); @@ -133,7 +133,7 @@ void HandshakeExtensionMessage::doReceivedAction() _dctx->getOwnerRequestGroup()->getPieceStorage(); pieceStorage->setEndGamePieceNum(0); } - } else if(!attrs.containsKey(bittorrent::METADATA)) { + } else if(attrs->metadata.empty()) { throw DL_ABORT_EX("Peer didn't provide metadata_size." " It seems that it doesn't have whole metadata."); } -- cgit