← Back to team overview

linuxdcpp-team team mailing list archive

[Branch ~dcplusplus-team/dcplusplus/trunk] Rev 2431: remove some cruft, more info in users info

 

------------------------------------------------------------
revno: 2431
committer: Jacek Sieka <arnetheduck@xxxxxxxxx>
branch nick: dcplusplus
timestamp: Sat 2011-02-19 23:27:39 +0100
message:
  remove some cruft, more info in users info
modified:
  dcpp/AdcCommand.h
  dcpp/AdcHub.cpp
  dcpp/ClientManager.cpp
  dcpp/ClientManager.h
  dcpp/ConnectionManager.cpp
  dcpp/QueueManager.cpp
  dcpp/QueueManager.h
  win32/TransferView.cpp
  win32/UsersFrame.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/AdcCommand.h'
--- dcpp/AdcCommand.h	2011-01-02 17:12:02 +0000
+++ dcpp/AdcCommand.h	2011-02-19 22:27:39 +0000
@@ -202,10 +202,8 @@
 				C(SND);
 				C(SID);
 				C(CMD);
-#ifndef DISABLE_NAT_TRAVERSAL
 				C(NAT);
 				C(RNT);
-#endif
 			default:
 				dcdebug("Unknown ADC command: %.50s\n", aLine.c_str());
 				break;

=== modified file 'dcpp/AdcHub.cpp'
--- dcpp/AdcHub.cpp	2011-01-29 14:15:43 +0000
+++ dcpp/AdcHub.cpp	2011-02-19 22:27:39 +0000
@@ -359,10 +359,7 @@
 	if(c.getParameters().size() < 2) {
 		return;
 	}
-#ifdef DISABLE_NAT_TRAVERSAL
-	if(!ClientManager::getInstance()->isActive())
-		return;
-#endif
+
 	OnlineUser* u = findUser(c.getFrom());
 	if(!u || u->getUser() == ClientManager::getInstance()->getMe())
 		return;
@@ -379,7 +376,7 @@
 		unknownProtocol(c.getFrom(), protocol, token);
 		return;
 	}
-#ifndef DISABLE_NAT_TRAVERSAL
+
 	if(ClientManager::getInstance()->isActive()) {
 		connect(*u, token, secure);
 		return;
@@ -393,10 +390,6 @@
 	// clients call ConnectionManager::adcConnect.
 	send(AdcCommand(AdcCommand::CMD_NAT, u->getIdentity().getSID(), AdcCommand::TYPE_DIRECT).
 		addParam(protocol).addParam(Util::toString(sock->getLocalPort())).addParam(token));
-	return;
-#else
-	connect(*u, token, secure);
-#endif
 }
 
 void AdcHub::handle(AdcCommand::CMD, AdcCommand& c) throw() {
@@ -901,13 +894,10 @@
 	} else {
 		c.setType(AdcCommand::TYPE_FEATURE);
 		string features = c.getFeatures();
-#ifndef DISABLE_NAT_TRAVERSAL
+
 		c.setFeatures(features + '+' + TCP4_FEATURE + '-' + NAT0_FEATURE);
 		send(c);
 		c.setFeatures(features + '+' + NAT0_FEATURE);
-#else
-		c.setFeatures(features + '+' + TCP4_FEATURE);
-#endif
 		send(c);
 	}
 }

=== modified file 'dcpp/ClientManager.cpp'
--- dcpp/ClientManager.cpp	2011-01-29 14:15:43 +0000
+++ dcpp/ClientManager.cpp	2011-02-19 22:27:39 +0000
@@ -144,6 +144,17 @@
 	return StringList(ret.begin(), ret.end());
 }
 
+vector<Identity> ClientManager::getIdentities(const UserPtr &u) const {
+	Lock l(cs);
+	auto op = onlineUsers.equal_range(u->getCID());
+	auto ret = vector<Identity>();
+	for(auto i = op.first; i != op.second; ++i) {
+		ret.push_back(i->second->getIdentity());
+	}
+
+	return ret;
+}
+
 string ClientManager::getField(const CID& cid, const string& hint, const char* field) const {
 	Lock l(cs);
 

=== modified file 'dcpp/ClientManager.h'
--- dcpp/ClientManager.h	2011-01-29 14:15:43 +0000
+++ dcpp/ClientManager.h	2011-02-19 22:27:39 +0000
@@ -58,6 +58,8 @@
 	StringList getNicks(const HintedUser& user) { return getNicks(user.user->getCID(), user.hint); }
 	StringList getHubNames(const HintedUser& user) { return getHubNames(user.user->getCID(), user.hint); }
 
+	vector<Identity> getIdentities(const UserPtr &u) const;
+
 	string getConnection(const CID& cid) const;
 
 	bool isConnected(const string& aUrl) const;

=== modified file 'dcpp/ConnectionManager.cpp'
--- dcpp/ConnectionManager.cpp	2011-01-29 14:15:43 +0000
+++ dcpp/ConnectionManager.cpp	2011-02-19 22:27:39 +0000
@@ -242,7 +242,8 @@
 	while(!die) {
 		try {
 			while(!die) {
-				if(sock.wait(POLL_TIMEOUT, Socket::WAIT_READ) == Socket::WAIT_READ) {
+				auto ret = sock.wait(POLL_TIMEOUT, Socket::WAIT_READ);
+				if(ret == Socket::WAIT_READ) {
 					ConnectionManager::getInstance()->accept(sock, secure);
 				}
 			}

=== modified file 'dcpp/QueueManager.cpp'
--- dcpp/QueueManager.cpp	2011-02-11 21:36:28 +0000
+++ dcpp/QueueManager.cpp	2011-02-19 22:27:39 +0000
@@ -252,8 +252,8 @@
 	add(qi);
 }
 
-int64_t QueueManager::UserQueue::getQueued(const UserPtr& aUser) const {
-	int64_t total = 0;
+pair<size_t, int64_t> QueueManager::UserQueue::getQueued(const UserPtr& aUser) const {
+	pair<size_t, int64_t> ret(0, 0);
 	for(size_t i = QueueItem::LOWEST; i < QueueItem::LAST; ++i) {
 		const QueueItem::UserListMap& ulm = userQueue[i];
 		QueueItem::UserListMap::const_iterator iulm = ulm.find(aUser);
@@ -263,12 +263,13 @@
 
 		for(QueueItem::List::const_iterator j = iulm->second.begin(); j != iulm->second.end(); ++j) {
 			const QueueItem::Ptr qi = *j;
+			++ret.first;
 			if(qi->getSize() != -1) {
-				total += qi->getSize() - qi->getDownloadedBytes();
+				ret.second += qi->getSize() - qi->getDownloadedBytes();
 			}
 		}
 	}
-	return total;
+	return ret;
 }
 
 QueueItem* QueueManager::UserQueue::getRunning(const UserPtr& aUser) {
@@ -1339,7 +1340,7 @@
 	}
 }
 
-int64_t QueueManager::getQueued(const UserPtr& aUser) const {
+pair<size_t, int64_t> QueueManager::getQueued(const UserPtr& aUser) const {
 	Lock l(cs);
 	return userQueue.getQueued(aUser);
 }

=== modified file 'dcpp/QueueManager.h'
--- dcpp/QueueManager.h	2011-01-02 17:12:02 +0000
+++ dcpp/QueueManager.h	2011-02-19 22:27:39 +0000
@@ -110,7 +110,7 @@
 	void putDownload(Download* aDownload, bool finished) throw();
 	void setFile(Download* download);
 
-	int64_t getQueued(const UserPtr& aUser) const;
+	pair<size_t, int64_t> getQueued(const UserPtr& aUser) const;
 
 	/** @return The highest priority download the user has, PAUSED may also mean no downloads */
 	QueueItem::Priority hasDownload(const UserPtr& aUser) throw();
@@ -211,7 +211,7 @@
 		bool isRunning(const UserPtr& aUser) const {
 			return (running.find(aUser) != running.end());
 		}
-		int64_t getQueued(const UserPtr& aUser) const;
+		pair<size_t, int64_t> getQueued(const UserPtr& aUser) const;
 	private:
 		/** QueueItems by priority and user (this is where the download order is determined) */
 		QueueItem::UserListMap userQueue[QueueItem::LAST];

=== modified file 'win32/TransferView.cpp'
--- win32/TransferView.cpp	2011-02-19 17:03:15 +0000
+++ win32/TransferView.cpp	2011-02-19 22:27:39 +0000
@@ -589,7 +589,7 @@
 	columns[CONNECTION_COLUMN_STATUS] = T_("Idle");
 	columns[CONNECTION_COLUMN_TRANSFERED] = Text::toT(Util::toString(0));
 	if(aDownload) {
-		queued = QueueManager::getInstance()->getQueued(u);
+		queued = QueueManager::getInstance()->getQueued(u).second;
 		columns[CONNECTION_COLUMN_QUEUED] = Text::toT(Util::formatBytes(queued));
 	}
 }
@@ -600,7 +600,7 @@
 		status = ui.status;
 		if(download) {
 			// Also update queued when status changes...
-			queued = QueueManager::getInstance()->getQueued(user);
+			queued = QueueManager::getInstance()->getQueued(user).second;
 			columns[CONNECTION_COLUMN_QUEUED] = Text::toT(Util::formatBytes(queued));
 		}
 	}

=== modified file 'win32/UsersFrame.cpp'
--- win32/UsersFrame.cpp	2011-02-19 19:20:08 +0000
+++ win32/UsersFrame.cpp	2011-02-19 22:27:39 +0000
@@ -49,20 +49,36 @@
 struct FieldName {
 	string field;
 	tstring name;
+	tstring (*convert)(const string &val);
 };
 
+static tstring formatBytes(const string& val) {
+	return Text::toT(Util::formatBytes(val));
+}
+
 static const FieldName fields[] =
 {
-	{ "NI", T_("Nick") },
-	{ "DE", T_("Description") },
-	{ "EM", T_("E-Mail") },
-	{ "SL", T_("Slots") },
-	{ "SF", T_("Shared files") },
-	{ "SS", T_("Shared bytes") },
-	{ "I4", T_("IP (v4)") },
-	{ "I6", T_("IP (v6)") },
-	{ "VE", T_("Client") },
-	{ "", _T("") }
+	{ "NI", T_("Nick"), &Text::toT },
+	{ "AW", T_("Away"), &Text::toT },
+	{ "DE", T_("Description"), &Text::toT },
+	{ "EM", T_("E-Mail"), &Text::toT },
+	{ "SS", T_("Shared bytes"), &formatBytes },
+	{ "SF", T_("Shared files"), &Text::toT },
+	{ "US", T_("Upload speed"), &Text::toT },
+	{ "DS", T_("Download speed"), &Text::toT },
+	{ "SL", T_("Slots"), &Text::toT },
+	{ "HN", T_("Hubs (normal)"), &Text::toT },
+	{ "HR", T_("Hubs (registered)"), &Text::toT },
+	{ "HO", T_("Hubs (op)"), &Text::toT },
+	{ "I4", T_("IP (v4)"), &Text::toT },
+	{ "I6", T_("IP (v6)"), &Text::toT },
+	{ "U4", T_("Search port (v4)"), &Text::toT },
+	{ "U6", T_("Search port (v4)"), &Text::toT },
+	{ "SU", T_("Features"), &Text::toT },
+	{ "VE", T_("Client"), &Text::toT },
+	{ "ID", T_("CID"), &Text::toT },
+
+	{ "", _T(""), 0 }
 };
 
 UsersFrame::UsersFrame(TabViewPtr parent) :
@@ -281,20 +297,29 @@
 		return;
 	}
 
-	auto lock = ClientManager::getInstance()->lock();
-	auto ui = ClientManager::getInstance()->findOnlineUser(sel->getUser(), false);
-	if(!ui) {
+	auto user = sel->getUser();
+	auto idents = ClientManager::getInstance()->getIdentities(user);
+	if(idents.empty()) {
 		return;
 	}
 
-	auto info = ui->getIdentity().getInfo();
+	auto info = idents[0].getInfo();
+	for(size_t i = 1; i < idents.size(); ++i) {
+		for(auto j = idents[i].getInfo().begin(); j != idents[i].getInfo().end(); ++j) {
+			info[j->first] = j->second;
+		}
+	}
+
+	userInfo->addRow(GridInfo());
+	auto general = userInfo->addChild(Label::Seed(T_("General information")));
+	userInfo->setWidget(general, 0, 0, 1, 2);
 
 	for(auto f = fields; !f->field.empty(); ++f) {
 		auto i = info.find(f->field);
 		if(i != info.end()) {
 			userInfo->addRow(GridInfo());
 			userInfo->addChild(Label::Seed(f->name));
-			userInfo->addChild(Label::Seed(Text::toT(i->second)));
+			userInfo->addChild(Label::Seed(f->convert(i->second)));
 			info.erase(i);
 		}
 	}
@@ -305,6 +330,35 @@
 		userInfo->addChild(Label::Seed(Text::toT(i->second)));
 	}
 
+	auto queued = QueueManager::getInstance()->getQueued(user);
+
+	if(queued.first) {
+		userInfo->addRow(GridInfo());
+		auto general = userInfo->addChild(Label::Seed(T_("Pending downloads information")));
+		userInfo->setWidget(general, userInfo->rowCount()-1, 0, 1, 2);
+
+		userInfo->addRow(GridInfo());
+		userInfo->addChild(Label::Seed(T_("Queued files")));
+		userInfo->addChild(Label::Seed(Text::toT(Util::toString(queued.first))));
+
+		userInfo->addRow(GridInfo());
+		userInfo->addChild(Label::Seed(T_("Queued bytes")));
+		userInfo->addChild(Label::Seed(Text::toT(Util::formatBytes(queued.second))));
+	}
+
+	auto files = UploadManager::getInstance()->getWaitingUserFiles(user);
+	if(!files.empty()) {
+		userInfo->addRow(GridInfo());
+		auto general = userInfo->addChild(Label::Seed(T_("Pending uploads information")));
+		userInfo->setWidget(general, userInfo->rowCount()-1, 0, 1, 2);
+
+		for(auto i = files.begin(); i != files.end(); ++i) {
+			userInfo->addRow(GridInfo());
+			userInfo->addChild(Label::Seed(T_("Filename")));
+			userInfo->addChild(Label::Seed(Text::toT(*i)));
+		}
+	}
+
 	layout();
 }
 
@@ -421,14 +475,14 @@
 		return true;
 	}
 
-	if((any || showQueue->getChecked()) && QueueManager::getInstance()->getQueued(u) > 0) {
-		return true;
-	}
-
 	if((any || showWaiting->getChecked()) && UploadManager::getInstance()->isWaiting(u)) {
 		return true;
 	}
 
+	if((any || showQueue->getChecked()) && QueueManager::getInstance()->getQueued(u).first > 0) {
+		return true;
+	}
+
 	return false;
 }