From 8e296230775deade9c63f48e61a1ccc9c7e3f4da Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Sun, 16 Feb 2014 19:48:27 +0100 Subject: [PATCH] [Qt] show number of in/out connections in debug console --- src/qt/clientmodel.cpp | 13 +++++++++++-- src/qt/clientmodel.h | 10 +++++++++- src/qt/rpcconsole.cpp | 9 ++++++++- 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/qt/clientmodel.cpp b/src/qt/clientmodel.cpp index f273b9ea..cb832fdd 100644 --- a/src/qt/clientmodel.cpp +++ b/src/qt/clientmodel.cpp @@ -39,9 +39,18 @@ ClientModel::~ClientModel() unsubscribeFromCoreSignals(); } -int ClientModel::getNumConnections() const +int ClientModel::getNumConnections(unsigned int flags) const { - return vNodes.size(); + LOCK(cs_vNodes); + if (flags == CONNECTIONS_ALL) // Shortcut if we want total + return vNodes.size(); + + int nNum = 0; + BOOST_FOREACH(CNode* pnode, vNodes) + if (flags & (pnode->fInbound ? CONNECTIONS_IN : CONNECTIONS_OUT)) + nNum++; + + return nNum; } int ClientModel::getNumBlocks() const diff --git a/src/qt/clientmodel.h b/src/qt/clientmodel.h index ca735f14..f29b695e 100644 --- a/src/qt/clientmodel.h +++ b/src/qt/clientmodel.h @@ -25,6 +25,13 @@ enum BlockSource { BLOCK_SOURCE_NETWORK }; +enum NumConnections { + CONNECTIONS_NONE = 0, + CONNECTIONS_IN = (1U << 0), + CONNECTIONS_OUT = (1U << 1), + CONNECTIONS_ALL = (CONNECTIONS_IN | CONNECTIONS_OUT), +}; + /** Model for Bitcoin network client. */ class ClientModel : public QObject { @@ -36,7 +43,8 @@ public: OptionsModel *getOptionsModel(); - int getNumConnections() const; + //! Return number of connections, default is in- and outbound (total) + int getNumConnections(unsigned int flags = CONNECTIONS_ALL) const; int getNumBlocks() const; int getNumBlocksAtStartup(); diff --git a/src/qt/rpcconsole.cpp b/src/qt/rpcconsole.cpp index bd29efee..cb5991ad 100644 --- a/src/qt/rpcconsole.cpp +++ b/src/qt/rpcconsole.cpp @@ -349,7 +349,14 @@ void RPCConsole::message(int category, const QString &message, bool html) void RPCConsole::setNumConnections(int count) { - ui->numberOfConnections->setText(QString::number(count)); + if (!clientModel) + return; + + QString connections = QString::number(count) + " ("; + connections += tr("In:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_IN)) + " / "; + connections += tr("Out:") + " " + QString::number(clientModel->getNumConnections(CONNECTIONS_OUT)) + ")"; + + ui->numberOfConnections->setText(connections); } void RPCConsole::setNumBlocks(int count, int countOfPeers)