mirror of https://github.com/aria2/aria2
				
				
				
			Amend
							parent
							
								
									302bdfd9a0
								
							
						
					
					
						commit
						2e0e8ed0e5
					
				|  | @ -1,53 +0,0 @@ | |||
| /* <!-- copyright */ | ||||
| /*
 | ||||
|  * aria2 - The high speed download utility | ||||
|  * | ||||
|  * Copyright (C) 2006 Tatsuhiro Tsujikawa | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation; either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||||
|  * | ||||
|  * In addition, as a special exception, the copyright holders give | ||||
|  * permission to link the code of portions of this program with the | ||||
|  * OpenSSL library under certain conditions as described in each | ||||
|  * individual source file, and distribute linked combinations | ||||
|  * including the two. | ||||
|  * You must obey the GNU General Public License in all respects | ||||
|  * for all of the code used other than OpenSSL.  If you modify | ||||
|  * file(s) with this exception, you may extend this exception to your | ||||
|  * version of the file(s), but you are not obligated to do so.  If you | ||||
|  * do not wish to do so, delete this exception statement from your | ||||
|  * version.  If you delete this exception statement from all source | ||||
|  * files in the program, then also delete it here. | ||||
|  */ | ||||
| /* copyright --> */ | ||||
| #include "CheckIntegrityMan.h" | ||||
| #include "CheckIntegrityEntry.h" | ||||
| 
 | ||||
| namespace aria2 { | ||||
| 
 | ||||
| bool CheckIntegrityMan::isPicked(std::shared_ptr<RequestGroup> rg) { | ||||
|     return pickedEntry_ && rg && pickedEntry_->getRequestGroup() == rg.get(); | ||||
| } | ||||
| 
 | ||||
| bool CheckIntegrityMan::isQueued(std::shared_ptr<RequestGroup> rg) { | ||||
|     bool found = false; | ||||
|     for(auto& e : entries_) { | ||||
|         if(e && rg && e->getRequestGroup() == rg.get()) | ||||
|             found = true; | ||||
|     } | ||||
|     return found; | ||||
| } | ||||
| 
 | ||||
| } | ||||
|  | @ -41,15 +41,8 @@ | |||
| namespace aria2 { | ||||
| 
 | ||||
| class CheckIntegrityEntry; | ||||
| class RequestGroup; | ||||
| 
 | ||||
| class CheckIntegrityMan : public SequentialPicker<CheckIntegrityEntry> { | ||||
| public: | ||||
|     bool isPicked(std::shared_ptr<RequestGroup> rg); | ||||
|     bool isQueued(std::shared_ptr<RequestGroup> rg); | ||||
| }; | ||||
| 
 | ||||
| // typedef SequentialPicker<CheckIntegrityEntry> CheckIntegrityMan;
 | ||||
| typedef SequentialPicker<CheckIntegrityEntry> CheckIntegrityMan; | ||||
| 
 | ||||
| } // namespace aria2
 | ||||
| 
 | ||||
|  |  | |||
|  | @ -39,7 +39,7 @@ SRCS =  \ | |||
| 	CheckIntegrityCommand.cc CheckIntegrityCommand.h\
 | ||||
| 	CheckIntegrityDispatcherCommand.cc CheckIntegrityDispatcherCommand.h\
 | ||||
| 	CheckIntegrityEntry.cc CheckIntegrityEntry.h\
 | ||||
| 	CheckIntegrityMan.cc CheckIntegrityMan.h\
 | ||||
| 	CheckIntegrityMan.h\
 | ||||
| 	Checksum.cc Checksum.h\
 | ||||
| 	ChecksumCheckIntegrityEntry.cc ChecksumCheckIntegrityEntry.h\
 | ||||
| 	ChunkChecksum.cc ChunkChecksum.h\
 | ||||
|  |  | |||
|  | @ -37,7 +37,6 @@ | |||
| 
 | ||||
| #include "common.h" | ||||
| 
 | ||||
| #include "Command.h" | ||||
| #include <memory> | ||||
| 
 | ||||
| namespace aria2 { | ||||
|  |  | |||
|  | @ -796,13 +796,22 @@ void gatherProgress(Dict* entryDict, const std::shared_ptr<RequestGroup>& group, | |||
|                              e->getBtRegistry()->get(group->getGID()), keys); | ||||
|   } | ||||
| #endif // ENABLE_BITTORRENT
 | ||||
|   if (e && e->getCheckIntegrityMan()) { | ||||
|      if (e->getCheckIntegrityMan()->isPicked(group)) { | ||||
|         entryDict->put(KEY_VERIFIED_LENGTH, util::itos(e->getCheckIntegrityMan()->getPickedEntry()->getCurrentLength())); | ||||
|      } | ||||
|      if (e->getCheckIntegrityMan()->isQueued(group)) { | ||||
|         entryDict->put(KEY_VERIFY_PENDING, VLB_TRUE); | ||||
|      } | ||||
|   if (e->getCheckIntegrityMan()) { | ||||
|     if (e->getCheckIntegrityMan()->isPicked( | ||||
|             [&group](const CheckIntegrityEntry& ent) { | ||||
|               return ent.getRequestGroup() == group.get(); | ||||
|             })) { | ||||
|       entryDict->put( | ||||
|           KEY_VERIFIED_LENGTH, | ||||
|           util::itos( | ||||
|               e->getCheckIntegrityMan()->getPickedEntry()->getCurrentLength())); | ||||
|     } | ||||
|     if (e->getCheckIntegrityMan()->isQueued( | ||||
|             [&group](const CheckIntegrityEntry& ent) { | ||||
|               return ent.getRequestGroup() == group.get(); | ||||
|             })) { | ||||
|       entryDict->put(KEY_VERIFY_PENDING, VLB_TRUE); | ||||
|     } | ||||
|   } | ||||
| } | ||||
| } // namespace
 | ||||
|  |  | |||
|  | @ -43,7 +43,7 @@ | |||
| namespace aria2 { | ||||
| 
 | ||||
| template <typename T> class SequentialPicker { | ||||
| protected: | ||||
| private: | ||||
|   std::deque<std::unique_ptr<T>> entries_; | ||||
|   std::unique_ptr<T> pickedEntry_; | ||||
| 
 | ||||
|  | @ -72,6 +72,21 @@ public: | |||
|   } | ||||
| 
 | ||||
|   size_t countEntryInQueue() const { return entries_.size(); } | ||||
| 
 | ||||
|   bool isPicked(const std::function<bool(const T&)>& pred) const | ||||
|   { | ||||
|     return pickedEntry_ && pred(*pickedEntry_); | ||||
|   } | ||||
| 
 | ||||
|   bool isQueued(const std::function<bool(const T&)>& pred) const | ||||
|   { | ||||
|     for (auto& e : entries_) { | ||||
|       if (pred(*e)) { | ||||
|         return true; | ||||
|       } | ||||
|     } | ||||
|     return false; | ||||
|   } | ||||
| }; | ||||
| 
 | ||||
| } // namespace aria2
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Tatsuhiro Tsujikawa
						Tatsuhiro Tsujikawa