← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2766: Move some stuff to finishedmanager

 

------------------------------------------------------------
revno: 2766
committer: Jacek Sieka <arnetheduck@xxxxxxxxx>
branch nick: dcplusplus
timestamp: Wed 2011-12-28 19:37:58 +0100
message:
  Move some stuff to finishedmanager
modified:
  dcpp/File.h
  dcpp/FinishedManager.cpp
  dcpp/FinishedManager.h
  dcpp/QueueManager.cpp


--
lp:dcplusplus
https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk

Your team Dcplusplus-team is subscribed to branch lp:dcplusplus.
To unsubscribe from this branch go to https://code.launchpad.net/~dcplusplus-team/dcplusplus/trunk/+edit-subscription
=== modified file 'dcpp/File.h'
--- dcpp/File.h	2011-12-23 14:58:25 +0000
+++ dcpp/File.h	2011-12-28 18:37:58 +0000
@@ -35,6 +35,8 @@
 
 class File : public IOStream {
 public:
+	using OutputStream::write;
+
 	enum {
 		OPEN = 0x01,
 		CREATE = 0x02,
@@ -97,7 +99,7 @@
 
 	string read(size_t len);
 	string read();
-	void write(const string& aString) { write((void*)aString.data(), aString.size()); }
+
 	static StringList findFiles(const string& path, const string& pattern);
 
 protected:

=== modified file 'dcpp/FinishedManager.cpp'
--- dcpp/FinishedManager.cpp	2011-12-27 15:21:02 +0000
+++ dcpp/FinishedManager.cpp	2011-12-28 18:37:58 +0000
@@ -26,6 +26,7 @@
 #include "DownloadManager.h"
 #include "QueueManager.h"
 #include "UploadManager.h"
+#include "ClientManager.h"
 
 namespace dcpp {
 
@@ -102,6 +103,64 @@
 	ULByUser.clear();
 }
 
+void FinishedManager::update(const string & target, ParamMap& params) {
+	Lock l(cs);
+
+	auto it = DLByFile.find(target);
+	if(it == DLByFile.end()) {
+		return;
+	}
+
+	auto entry = it->second;
+	if (!entry->getUsers().empty()) {
+		StringList nicks, cids, ips, hubNames, hubUrls, temp;
+		string ip;
+		for(auto i = entry->getUsers().begin(), iend = entry->getUsers().end(); i != iend; ++i) {
+
+			nicks.push_back(Util::toString(ClientManager::getInstance()->getNicks(*i)));
+			cids.push_back(i->user->getCID().toBase32());
+
+			ip.clear();
+			if (i->user->isOnline()) {
+				OnlineUser* u = ClientManager::getInstance()->findOnlineUser(*i, false);
+				if (u) {
+					ip = u->getIdentity().getIp();
+				}
+			}
+			if (ip.empty()) {
+				ip = _("Offline");
+			}
+			ips.push_back(ip);
+
+			temp = ClientManager::getInstance()->getHubNames(*i);
+			if(temp.empty()) {
+				temp.push_back(_("Offline"));
+			}
+			hubNames.push_back(Util::toString(temp));
+
+			temp = ClientManager::getInstance()->getHubUrls(*i);
+			if(temp.empty()) {
+				temp.push_back(_("Offline"));
+			}
+			hubUrls.push_back(Util::toString(temp));
+		}
+
+		params["userNI"] = Util::toString(nicks);
+		params["userCID"] = Util::toString(cids);
+		params["userI4"] = Util::toString(ips);
+		params["hubNI"] = Util::toString(hubNames);
+		params["hubURL"] = Util::toString(hubUrls);
+	}
+
+	params["fileSIsession"] = Util::toString(entry->getTransferred());
+	params["fileSIsessionshort"] = Util::formatBytes(entry->getTransferred());
+	params["fileSIactual"] = Util::toString(entry->getActual());
+	params["fileSIactualshort"] = Util::formatBytes(entry->getActual());
+
+	params["speed"] = str(F_("%1%/s") % Util::formatBytes(entry->getAverageSpeed()));
+	params["time"] = Util::formatSeconds(entry->getMilliSeconds() / 1000);
+}
+
 void FinishedManager::onComplete(Transfer* t, bool upload, bool crc32Checked) {
 	if(t->getType() == Transfer::TYPE_FILE || (t->getType() == Transfer::TYPE_FULL_LIST && BOOLSETTING(LOG_FILELIST_TRANSFERS))) {
 		string file = t->getPath();

=== modified file 'dcpp/FinishedManager.h'
--- dcpp/FinishedManager.h	2011-12-27 15:21:02 +0000
+++ dcpp/FinishedManager.h	2011-12-28 18:37:58 +0000
@@ -39,6 +39,7 @@
 	typedef unordered_map<string, FinishedFileItemPtr> MapByFile;
 	typedef unordered_map<HintedUser, FinishedUserItemPtr, User::Hash> MapByUser;
 
+	void update(const string& target, ParamMap& params);
 	Lock lock();
 	const MapByFile& getMapByFile(bool upload) const;
 	const MapByUser& getMapByUser(bool upload) const;

=== modified file 'dcpp/QueueManager.cpp'
--- dcpp/QueueManager.cpp	2011-12-27 21:24:13 +0000
+++ dcpp/QueueManager.cpp	2011-12-28 18:37:58 +0000
@@ -1473,7 +1473,7 @@
 			}
 		}
 
-		f.write("</Downloads>\r\n");
+		f.write(LIT("</Downloads>\r\n"));
 		f.flush();
 		ff.close();
 		File::deleteFile(getQueueFile());
@@ -1486,7 +1486,7 @@
 	// Put this here to avoid very many saves tries when disk is full...
 	lastSave = GET_TICK();
 
-	std::for_each(cids.begin(), cids.end(), [](const CID& cid) { ClientManager::getInstance()->saveUser(cid); });
+	for_each(cids, [](const CID& cid) { ClientManager::getInstance()->saveUser(cid); });
 }
 
 class QueueLoader : public SimpleXMLReader::CallBack {
@@ -1768,62 +1768,7 @@
 	params["fileTR"] = qi->getTTH().toBase32();
 	params["sfv"] = Util::toString(crcError ? 1 : 0);
 
-	{
-		auto lock = FinishedManager::getInstance()->lock();
-
-		auto& map = FinishedManager::getInstance()->getMapByFile(false);
-		auto it = map.find(qi->getTarget());
-		if(it != map.end()) {
-			auto entry = it->second;
-			if (!entry->getUsers().empty()) {
-				StringList nicks, cids, ips, hubNames, hubUrls, temp;
-				string ip;
-				for(auto i = entry->getUsers().begin(), iend = entry->getUsers().end(); i != iend; ++i) {
-
-					nicks.push_back(Util::toString(ClientManager::getInstance()->getNicks(*i)));
-					cids.push_back(i->user->getCID().toBase32());
-
-					ip.clear();
-					if (i->user->isOnline()) {
-						OnlineUser* u = ClientManager::getInstance()->findOnlineUser(*i, false);
-						if (u) {
-							ip = u->getIdentity().getIp();
-						}
-					}
-					if (ip.empty()) {
-						ip = _("Offline");
-					}
-					ips.push_back(ip);
-
-					temp = ClientManager::getInstance()->getHubNames(*i);
-					if(temp.empty()) {
-						temp.push_back(_("Offline"));
-					}
-					hubNames.push_back(Util::toString(temp));
-
-					temp = ClientManager::getInstance()->getHubUrls(*i);
-					if(temp.empty()) {
-						temp.push_back(_("Offline"));
-					}
-					hubUrls.push_back(Util::toString(temp));
-				}
-
-				params["userNI"] = Util::toString(nicks);
-				params["userCID"] = Util::toString(cids);
-				params["userI4"] = Util::toString(ips);
-				params["hubNI"] = Util::toString(hubNames);
-				params["hubURL"] = Util::toString(hubUrls);
-			}
-
-			params["fileSIsession"] = Util::toString(entry->getTransferred());
-			params["fileSIsessionshort"] = Util::formatBytes(entry->getTransferred());
-			params["fileSIactual"] = Util::toString(entry->getActual());
-			params["fileSIactualshort"] = Util::formatBytes(entry->getActual());
-
-			params["speed"] = str(F_("%1%/s") % Util::formatBytes(entry->getAverageSpeed()));
-			params["time"] = Util::formatSeconds(entry->getMilliSeconds() / 1000);
-		}
-	}
+	FinishedManager::getInstance()->update(qi->getTarget(), params);
 
 	LOG(LogManager::FINISHED_DOWNLOAD, params);
 }