@@ -186,6 +186,7 @@ struct LocalServiceInfo {
186186
187187extern CCriticalSection cs_mapLocalHost;
188188extern std::map<CNetAddr, LocalServiceInfo> mapLocalHost;
189+ typedef std::map<std::string, uint64_t > mapMsgCmdSize; // command, total bytes
189190
190191class CNodeStats
191192{
@@ -203,7 +204,9 @@ class CNodeStats
203204 bool fInbound ;
204205 int nStartingHeight;
205206 uint64_t nSendBytes;
207+ mapMsgCmdSize mapSendBytesPerMsgCmd;
206208 uint64_t nRecvBytes;
209+ mapMsgCmdSize mapRecvBytesPerMsgCmd;
207210 bool fWhitelisted ;
208211 double dPingTime;
209212 double dPingWait;
@@ -382,6 +385,9 @@ class CNode
382385 static std::vector<CSubNet> vWhitelistedRange;
383386 static CCriticalSection cs_vWhitelistedRange;
384387
388+ mapMsgCmdSize mapSendBytesPerMsgCmd;
389+ mapMsgCmdSize mapRecvBytesPerMsgCmd;
390+
385391 // Basic fuzz-testing
386392 void Fuzz (int nChance); // modifies ssSend
387393
@@ -551,7 +557,7 @@ class CNode
551557 void AbortMessage () UNLOCK_FUNCTION(cs_vSend);
552558
553559 // TODO: Document the precondition of this function. Is cs_vSend locked?
554- void EndMessage () UNLOCK_FUNCTION(cs_vSend);
560+ void EndMessage (const char * pszCommand ) UNLOCK_FUNCTION(cs_vSend);
555561
556562 void PushVersion ();
557563
@@ -561,7 +567,7 @@ class CNode
561567 try
562568 {
563569 BeginMessage (pszCommand);
564- EndMessage ();
570+ EndMessage (pszCommand );
565571 }
566572 catch (...)
567573 {
@@ -577,7 +583,7 @@ class CNode
577583 {
578584 BeginMessage (pszCommand);
579585 ssSend << a1;
580- EndMessage ();
586+ EndMessage (pszCommand );
581587 }
582588 catch (...)
583589 {
@@ -593,7 +599,7 @@ class CNode
593599 {
594600 BeginMessage (pszCommand);
595601 ssSend << a1 << a2;
596- EndMessage ();
602+ EndMessage (pszCommand );
597603 }
598604 catch (...)
599605 {
@@ -609,7 +615,7 @@ class CNode
609615 {
610616 BeginMessage (pszCommand);
611617 ssSend << a1 << a2 << a3;
612- EndMessage ();
618+ EndMessage (pszCommand );
613619 }
614620 catch (...)
615621 {
@@ -625,7 +631,7 @@ class CNode
625631 {
626632 BeginMessage (pszCommand);
627633 ssSend << a1 << a2 << a3 << a4;
628- EndMessage ();
634+ EndMessage (pszCommand );
629635 }
630636 catch (...)
631637 {
@@ -641,7 +647,7 @@ class CNode
641647 {
642648 BeginMessage (pszCommand);
643649 ssSend << a1 << a2 << a3 << a4 << a5;
644- EndMessage ();
650+ EndMessage (pszCommand );
645651 }
646652 catch (...)
647653 {
@@ -657,7 +663,7 @@ class CNode
657663 {
658664 BeginMessage (pszCommand);
659665 ssSend << a1 << a2 << a3 << a4 << a5 << a6;
660- EndMessage ();
666+ EndMessage (pszCommand );
661667 }
662668 catch (...)
663669 {
@@ -673,7 +679,7 @@ class CNode
673679 {
674680 BeginMessage (pszCommand);
675681 ssSend << a1 << a2 << a3 << a4 << a5 << a6 << a7;
676- EndMessage ();
682+ EndMessage (pszCommand );
677683 }
678684 catch (...)
679685 {
@@ -689,7 +695,7 @@ class CNode
689695 {
690696 BeginMessage (pszCommand);
691697 ssSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8;
692- EndMessage ();
698+ EndMessage (pszCommand );
693699 }
694700 catch (...)
695701 {
@@ -705,7 +711,7 @@ class CNode
705711 {
706712 BeginMessage (pszCommand);
707713 ssSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8 << a9;
708- EndMessage ();
714+ EndMessage (pszCommand );
709715 }
710716 catch (...)
711717 {
@@ -721,7 +727,7 @@ class CNode
721727 {
722728 BeginMessage (pszCommand);
723729 ssSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8 << a9 << a10;
724- EndMessage ();
730+ EndMessage (pszCommand );
725731 }
726732 catch (...)
727733 {
@@ -737,7 +743,7 @@ class CNode
737743 {
738744 BeginMessage (pszCommand);
739745 ssSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8 << a9 << a10 << a11;
740- EndMessage ();
746+ EndMessage (pszCommand );
741747 }
742748 catch (...)
743749 {
@@ -753,7 +759,7 @@ class CNode
753759 {
754760 BeginMessage (pszCommand);
755761 ssSend << a1 << a2 << a3 << a4 << a5 << a6 << a7 << a8 << a9 << a10 << a11 << a12;
756- EndMessage ();
762+ EndMessage (pszCommand );
757763 }
758764 catch (...)
759765 {
0 commit comments