• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

RakNetStatistics.cpp

Go to the documentation of this file.
00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 #include "RakNetStatistics.h"
00009 #include <stdio.h> // sprintf
00010 #include "BitStream.h" // BITS_TO_BYTES
00011 #include "GetTime.h"
00012 #include "RakString.h"
00013 
00014 using namespace RakNet;
00015 
00016 // Verbosity level currently supports 0 (low), 1 (medium), 2 (high)
00017 // Buffer must be hold enough to hold the output string.  See the source to get an idea of how many bytes will be output
00018 void RAK_DLL_EXPORT StatisticsToString( RakNetStatistics *s, char *buffer, int verbosityLevel )
00019 {
00020         if ( s == 0 )
00021         {
00022                 sprintf( buffer, "stats is a NULL pointer in statsToString\n" );
00023                 return ;
00024         }
00025 
00026         if (verbosityLevel==0)
00027         {
00028                 sprintf(buffer,
00029                         "Bytes per second sent     %"PRINTF_64_BIT_MODIFIER"u\n"
00030                         "Bytes per second received %"PRINTF_64_BIT_MODIFIER"u\n"
00031                         "Current packetloss        %.0f%%\n",
00032                         s->valueOverLastSecond[ACTUAL_BYTES_SENT],
00033                         s->valueOverLastSecond[ACTUAL_BYTES_RECEIVED],
00034                         s->packetlossLastSecond
00035                         );
00036         }
00037         else if (verbosityLevel==1)
00038         {
00039                 sprintf(buffer,
00040                         "Actual bytes per second sent       %"PRINTF_64_BIT_MODIFIER"u\n"
00041                         "Actual bytes per second received   %"PRINTF_64_BIT_MODIFIER"u\n"
00042                         "Message bytes per second queued    %"PRINTF_64_BIT_MODIFIER"u\n"
00043                         "Total actual bytes sent            %"PRINTF_64_BIT_MODIFIER"u\n"
00044                         "Total actual bytes received        %"PRINTF_64_BIT_MODIFIER"u\n"
00045                         "Total message bytes queued         %"PRINTF_64_BIT_MODIFIER"u\n"
00046                         "Current packetloss                 %.0f%%\n"
00047                         "Average packetloss                 %.0f%%\n"
00048                         "Elapsed connection time in seconds %"PRINTF_64_BIT_MODIFIER"u\n",
00049                         s->valueOverLastSecond[ACTUAL_BYTES_SENT],
00050                         s->valueOverLastSecond[ACTUAL_BYTES_RECEIVED],
00051                         s->valueOverLastSecond[USER_MESSAGE_BYTES_PUSHED],
00052                         s->runningTotal[ACTUAL_BYTES_SENT],
00053                         s->runningTotal[ACTUAL_BYTES_RECEIVED],
00054                         s->runningTotal[USER_MESSAGE_BYTES_PUSHED],
00055                         s->packetlossLastSecond,
00056                         s->packetlossTotal,
00057                         (uint64_t)((RakNet::GetTimeUS()-s->connectionStartTime)/1000000)
00058                         );
00059 
00060                 if (s->BPSLimitByCongestionControl!=0)
00061                 {
00062                         char buff2[128];
00063                         sprintf(buff2,
00064                                 "Send capacity                    %"PRINTF_64_BIT_MODIFIER"u bytes per second (%.0f%%)\n",
00065                                 s->BPSLimitByCongestionControl,
00066                                 100.0f * s->valueOverLastSecond[ACTUAL_BYTES_SENT] / s->BPSLimitByCongestionControl
00067                                 );
00068                         strcat(buffer,buff2);
00069                 }
00070                 if (s->BPSLimitByOutgoingBandwidthLimit!=0)
00071                 {
00072                         char buff2[128];
00073                         sprintf(buff2,
00074                                 "Send limit                       %"PRINTF_64_BIT_MODIFIER"u (%.0f%%)\n",
00075                                 s->BPSLimitByOutgoingBandwidthLimit,
00076                                 100.0f * s->valueOverLastSecond[ACTUAL_BYTES_SENT] / s->BPSLimitByOutgoingBandwidthLimit
00077                                 );
00078                         strcat(buffer,buff2);
00079                 }
00080         }       
00081         else
00082         {
00083                 sprintf(buffer,
00084                         "Actual bytes per second sent         %"PRINTF_64_BIT_MODIFIER"u\n"
00085                         "Actual bytes per second received     %"PRINTF_64_BIT_MODIFIER"u\n"
00086                         "Message bytes per second sent        %"PRINTF_64_BIT_MODIFIER"u\n"
00087                         "Message bytes per second resent      %"PRINTF_64_BIT_MODIFIER"u\n"
00088                         "Message bytes per second queued      %"PRINTF_64_BIT_MODIFIER"u\n"
00089                         "Message bytes per second processed   %"PRINTF_64_BIT_MODIFIER"u\n"
00090                         "Message bytes per second ignored     %"PRINTF_64_BIT_MODIFIER"u\n"
00091                         "Total bytes sent                     %"PRINTF_64_BIT_MODIFIER"u\n"
00092                         "Total bytes received                 %"PRINTF_64_BIT_MODIFIER"u\n"
00093                         "Total message bytes sent             %"PRINTF_64_BIT_MODIFIER"u\n"
00094                         "Total message bytes resent           %"PRINTF_64_BIT_MODIFIER"u\n"
00095                         "Total message bytes queued           %"PRINTF_64_BIT_MODIFIER"u\n"
00096                         "Total message bytes received         %"PRINTF_64_BIT_MODIFIER"u\n"
00097                         "Total message bytes ignored          %"PRINTF_64_BIT_MODIFIER"u\n"
00098                         "Messages in send buffer, by priority %i,%i,%i,%i\n"
00099                         "Bytes in send buffer, by priority    %i,%i,%i,%i\n"
00100                         "Messages in resend buffer            %i\n"
00101                         "Bytes in resend buffer               %"PRINTF_64_BIT_MODIFIER"u\n"
00102                         "Current packetloss                   %.0f%%\n"
00103                         "Average packetloss                   %.0f%%\n"
00104                         "Elapsed connection time in seconds   %"PRINTF_64_BIT_MODIFIER"u\n",
00105                         s->valueOverLastSecond[ACTUAL_BYTES_SENT],
00106                         s->valueOverLastSecond[ACTUAL_BYTES_RECEIVED],
00107                         s->valueOverLastSecond[USER_MESSAGE_BYTES_SENT],
00108                         s->valueOverLastSecond[USER_MESSAGE_BYTES_RESENT],
00109                         s->valueOverLastSecond[USER_MESSAGE_BYTES_PUSHED],
00110                         s->valueOverLastSecond[USER_MESSAGE_BYTES_RECEIVED_PROCESSED],
00111                         s->valueOverLastSecond[USER_MESSAGE_BYTES_RECEIVED_IGNORED],
00112                         s->runningTotal[ACTUAL_BYTES_SENT],
00113                         s->runningTotal[ACTUAL_BYTES_RECEIVED],
00114                         s->runningTotal[USER_MESSAGE_BYTES_SENT],
00115                         s->runningTotal[USER_MESSAGE_BYTES_RESENT],
00116                         s->runningTotal[USER_MESSAGE_BYTES_PUSHED],
00117                         s->runningTotal[USER_MESSAGE_BYTES_RECEIVED_PROCESSED],
00118                         s->runningTotal[USER_MESSAGE_BYTES_RECEIVED_IGNORED],
00119                         s->messageInSendBuffer[IMMEDIATE_PRIORITY],s->messageInSendBuffer[HIGH_PRIORITY],s->messageInSendBuffer[MEDIUM_PRIORITY],s->messageInSendBuffer[LOW_PRIORITY],
00120                         (unsigned int) s->bytesInSendBuffer[IMMEDIATE_PRIORITY],(unsigned int) s->bytesInSendBuffer[HIGH_PRIORITY],(unsigned int) s->bytesInSendBuffer[MEDIUM_PRIORITY],(unsigned int) s->bytesInSendBuffer[LOW_PRIORITY],
00121                         s->messagesInResendBuffer,
00122                         s->bytesInResendBuffer,
00123                         s->packetlossLastSecond,
00124                         s->packetlossTotal,
00125                         (uint64_t)((RakNet::GetTimeUS()-s->connectionStartTime)/1000000)
00126                         );
00127 
00128                 if (s->BPSLimitByCongestionControl!=0)
00129                 {
00130                         char buff2[128];
00131                         sprintf(buff2,
00132                                 "Send capacity                    %"PRINTF_64_BIT_MODIFIER"u bytes per second (%.0f%%)\n",
00133                                 s->BPSLimitByCongestionControl,
00134                                 100.0f * s->valueOverLastSecond[ACTUAL_BYTES_SENT] / s->BPSLimitByCongestionControl
00135                                 );
00136                         strcat(buffer,buff2);
00137                 }
00138                 if (s->BPSLimitByOutgoingBandwidthLimit!=0)
00139                 {
00140                         char buff2[128];
00141                         sprintf(buff2,
00142                                 "Send limit                       %"PRINTF_64_BIT_MODIFIER"u (%.0f%%)\n",
00143                                 s->BPSLimitByOutgoingBandwidthLimit,
00144                                 100.0f * s->valueOverLastSecond[ACTUAL_BYTES_SENT] / s->BPSLimitByOutgoingBandwidthLimit
00145                                 );
00146                         strcat(buffer,buff2);
00147                 }
00148         }
00149 }

Generated on Thu Sep 30 2010 01:27:26 for RakNet by  doxygen 1.7.1