#define BITCOIN_NET_H
#include <deque>
+#ifndef Q_MOC_RUN
#include <boost/array.hpp>
#include <boost/foreach.hpp>
+#endif
#include <openssl/rand.h>
#ifndef WIN32
int64 nReleaseTime;
int nStartingHeight;
int nMisbehavior;
+ uint64 nSendBytes;
+ uint64 nRecvBytes;
+ bool fSyncNode;
};
SOCKET hSocket;
CDataStream vSend;
CDataStream vRecv;
+ uint64 nSendBytes;
+ uint64 nRecvBytes;
CCriticalSection cs_vSend;
CCriticalSection cs_vRecv;
int64 nLastSend;
CBlockIndex* pindexLastGetBlocksBegin;
uint256 hashLastGetBlocksEnd;
int nStartingHeight;
+ bool fStartSync;
// flood relay
std::vector<CAddress> vAddrToSend;
hSocket = hSocketIn;
nLastSend = 0;
nLastRecv = 0;
+ nSendBytes = 0;
+ nRecvBytes = 0;
nLastSendEmpty = GetTime();
nTimeConnected = GetTime();
nHeaderStart = -1;
pindexLastGetBlocksBegin = 0;
hashLastGetBlocksEnd = 0;
nStartingHeight = -1;
+ fStartSync = false;
fGetAddr = false;
nMisbehavior = 0;
hashCheckpointKnown = 0;
}
}
+
private:
+ // Network usage totals
+ static CCriticalSection cs_totalBytesRecv;
+ static CCriticalSection cs_totalBytesSent;
+ static uint64_t nTotalBytesRecv;
+ static uint64_t nTotalBytesSent;
CNode(const CNode&);
void operator=(const CNode&);
public:
// the key is the earliest time the request can be sent
int64& nRequestTime = mapAlreadyAskedFor[inv];
if (fDebugNet)
- printf("askfor %s %"PRI64d" (%s)\n", inv.ToString().c_str(), nRequestTime, DateTimeStrFormat("%H:%M:%S", nRequestTime/1000000).c_str());
+ printf("askfor %s %" PRI64d " (%s)\n", inv.ToString().c_str(), nRequestTime, DateTimeStrFormat("%H:%M:%S", nRequestTime/1000000).c_str());
// Make sure not to reuse time indexes to keep things in the same order
int64 nNow = (GetTime() - 1) * 1000000;
static bool IsBanned(CNetAddr ip);
bool Misbehaving(int howmuch); // 1 == a little, 100 == a lot
void copyStats(CNodeStats &stats);
+ // Network stats
+ static void RecordBytesRecv(uint64_t bytes);
+ static void RecordBytesSent(uint64_t bytes);
+
+ static uint64_t GetTotalBytesRecv();
+ static uint64_t GetTotalBytesSent();
};
inline void RelayInventory(const CInv& inv)