aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPieter Wuille <pieter.wuille@gmail.com>2013-04-07 19:31:13 +0200
committerPieter Wuille <pieter.wuille@gmail.com>2013-04-07 19:31:13 +0200
commit86648a8d16699ab392508a48bb867d3fc4f7d6cf (patch)
tree8791097b76870c494c545a036368c5673ae48efe /src
parent6ed71b5e4faa2ea6d739eefa9c3dcc15db80439c (diff)
Add bytessent, bytesrecv and syncnode to getpeerinfo
Diffstat (limited to 'src')
-rw-r--r--src/net.cpp5
-rw-r--r--src/net.h7
-rw-r--r--src/rpcnet.cpp4
3 files changed, 16 insertions, 0 deletions
diff --git a/src/net.cpp b/src/net.cpp
index 4727f1e2e6..ccacb0b291 100644
--- a/src/net.cpp
+++ b/src/net.cpp
@@ -619,6 +619,9 @@ void CNode::copyStats(CNodeStats &stats)
X(nReleaseTime);
X(nStartingHeight);
X(nMisbehavior);
+ X(nSendBytes);
+ X(nRecvBytes);
+ stats.fSyncNode = (this == pnodeSync);
}
#undef X
@@ -713,6 +716,7 @@ void SocketSendData(CNode *pnode)
int nBytes = send(pnode->hSocket, &data[pnode->nSendOffset], data.size() - pnode->nSendOffset, MSG_NOSIGNAL | MSG_DONTWAIT);
if (nBytes > 0) {
pnode->nLastSend = GetTime();
+ pnode->nSendBytes += nBytes;
pnode->nSendOffset += nBytes;
if (pnode->nSendOffset == data.size()) {
pnode->nSendOffset = 0;
@@ -976,6 +980,7 @@ void ThreadSocketHandler()
if (!pnode->ReceiveMsgBytes(pchBuf, nBytes))
pnode->CloseSocketDisconnect();
pnode->nLastRecv = GetTime();
+ pnode->nRecvBytes += nBytes;
}
else if (nBytes == 0)
{
diff --git a/src/net.h b/src/net.h
index 2a8b7f09ee..719ef119bf 100644
--- a/src/net.h
+++ b/src/net.h
@@ -102,6 +102,9 @@ public:
int64 nReleaseTime;
int nStartingHeight;
int nMisbehavior;
+ uint64 nSendBytes;
+ uint64 nRecvBytes;
+ bool fSyncNode;
};
@@ -156,12 +159,14 @@ public:
CDataStream ssSend;
size_t nSendSize; // total size of all vSendMsg entries
size_t nSendOffset; // offset inside the first vSendMsg already sent
+ uint64 nSendBytes;
std::deque<CSerializeData> vSendMsg;
CCriticalSection cs_vSend;
std::deque<CInv> vRecvGetData;
std::deque<CNetMessage> vRecvMsg;
CCriticalSection cs_vRecvMsg;
+ uint64 nRecvBytes;
int nRecvVersion;
int64 nLastSend;
@@ -223,6 +228,8 @@ public:
nRecvVersion = MIN_PROTO_VERSION;
nLastSend = 0;
nLastRecv = 0;
+ nSendBytes = 0;
+ nRecvBytes = 0;
nLastSendEmpty = GetTime();
nTimeConnected = GetTime();
addr = addrIn;
diff --git a/src/rpcnet.cpp b/src/rpcnet.cpp
index 4db3be9319..7e2bdd4146 100644
--- a/src/rpcnet.cpp
+++ b/src/rpcnet.cpp
@@ -51,6 +51,8 @@ Value getpeerinfo(const Array& params, bool fHelp)
obj.push_back(Pair("services", strprintf("%08"PRI64x, stats.nServices)));
obj.push_back(Pair("lastsend", (boost::int64_t)stats.nLastSend));
obj.push_back(Pair("lastrecv", (boost::int64_t)stats.nLastRecv));
+ obj.push_back(Pair("bytessent", (boost::int64_t)stats.nSendBytes));
+ obj.push_back(Pair("bytesrecv", (boost::int64_t)stats.nRecvBytes));
obj.push_back(Pair("conntime", (boost::int64_t)stats.nTimeConnected));
obj.push_back(Pair("version", stats.nVersion));
obj.push_back(Pair("subver", stats.strSubVer));
@@ -58,6 +60,8 @@ Value getpeerinfo(const Array& params, bool fHelp)
obj.push_back(Pair("releasetime", (boost::int64_t)stats.nReleaseTime));
obj.push_back(Pair("startingheight", stats.nStartingHeight));
obj.push_back(Pair("banscore", stats.nMisbehavior));
+ if (stats.fSyncNode)
+ obj.push_back(Pair("syncnode", true));
ret.push_back(obj);
}