/* * Prints transfer reports in default style */ void reporter_printstats( Transfer_Info *stats ) { byte_snprintf( buffer, sizeof(buffer)/2, (double) stats->TotalLen, toupper( stats->mFormat)); byte_snprintf( &buffer[sizeof(buffer)/2], sizeof(buffer)/2, stats->TotalLen / (stats->endTime - stats->startTime), stats->mFormat); if ( stats->mUDP != (char)kMode_Server ) { // TCP Reporting printf( report_bw_format, stats->transferID, stats->startTime, stats->endTime, buffer, &buffer[sizeof(buffer)/2] ); } else { // UDP Reporting printf( report_bw_jitter_loss_format, stats->transferID, stats->startTime, stats->endTime, buffer, &buffer[sizeof(buffer)/2], stats->jitter*1000.0, stats->cntError, stats->cntDatagrams, (100.0 * stats->cntError) / stats->cntDatagrams ); if ( stats->cntOutofOrder > 0 ) { printf( report_outoforder, stats->transferID, stats->startTime, stats->endTime, stats->cntOutofOrder ); } } if ( stats->free == 1 && stats->mUDP == (char)kMode_Client ) { printf( report_datagrams, stats->transferID, stats->cntDatagrams ); } }
void PerfSocket::ReportWindowSize( void ) { // sReporting already locked from ReportClient/ServerSettings int win = get_tcp_windowsize( mSock ); int win_requested = mSettings->mTCPWin; char window[ 32 ]; byte_snprintf( window, sizeof(window), win, toupper( mSettings->mFormat)); printf( "%s: %s", (mUDP ? udp_buffer_size : (mSettings->mProtocol == 0 ? tcp_window_size : sctp_window_size)), window ); if ( win_requested == 0 ) { printf( " %s", window_default ); } else if ( win != win_requested ) { char request[ 32 ]; byte_snprintf( request, sizeof(request), win_requested, toupper( mSettings->mFormat)); printf( warn_window_requested, request ); } printf( "\n" ); fflush( stdout ); }
/* * Report the client or listener Settings in default style */ void reporter_reportsettings( ReporterData *data ) { int win, win_requested; win = getsock_tcp_windowsize( data->info.transferID, (data->mThreadMode == kMode_Listener ? 0 : 1) ); win_requested = data->mTCPWin; printf( seperator_line ); if ( data->mThreadMode == kMode_Listener ) { printf( server_port, (isUDP( data ) ? "UDP" : "TCP"), data->mPort ); } else { printf( client_port, data->mHost, (isUDP( data ) ? "UDP" : "TCP"), data->mPort ); } if ( data->mLocalhost != NULL ) { printf( bind_address, data->mLocalhost ); if ( SockAddr_isMulticast( &data->connection.local ) ) { printf( join_multicast, data->mLocalhost ); } } if ( isUDP( data ) ) { printf( (data->mThreadMode == kMode_Listener ? server_datagram_size : client_datagram_size), data->mBufLen ); if ( SockAddr_isMulticast( &data->connection.peer ) ) { printf( multicast_ttl, data->info.mTTL); } } byte_snprintf( buffer, sizeof(buffer), win, toupper( data->info.mFormat)); printf( "%s: %s", (isUDP( data ) ? udp_buffer_size : tcp_window_size), buffer ); if ( win_requested == 0 ) { printf( " %s", window_default ); } else if ( win != win_requested ) { byte_snprintf( buffer, sizeof(buffer), win_requested, toupper( data->info.mFormat)); printf( warn_window_requested, buffer ); } printf( "\n" ); printf( seperator_line ); }
void PerfSocket::ReportBW( max_size_t inBytes, double inStart, double inStop ) { // print a field header every 20 lines if ( --sReportCount <= 0 ) { printf( report_bw_header ); sReportCount = 20; } char bytes[ 32 ]; char speed[ 32 ]; byte_snprintf( bytes, sizeof(bytes), (double) inBytes, toupper( mSettings->mFormat)); byte_snprintf( speed, sizeof(speed), inBytes / (inStop - inStart), mSettings->mFormat); printf( report_bw_format, mSock, inStart, inStop, bytes, speed ); fflush( stdout ); }
void PerfSocket::ReportBW_Jitter_Loss( max_size_t inBytes, double inStart, double inStop, int32_t inErrorcnt, int32_t inOutofOrder, int32_t inDatagrams ) { // print a field header every 20 lines if ( --sReportCount <= 0 ) { printf( report_bw_jitter_loss_header ); sReportCount = 20; } assert( inErrorcnt >= 0 ); assert( inDatagrams >= 0 ); char bytes[ 32 ]; char speed[ 32 ]; byte_snprintf( bytes, sizeof(bytes), (double) inBytes, toupper( mSettings->mFormat)); byte_snprintf( speed, sizeof(speed), inBytes / (inStop - inStart), mSettings->mFormat); // assume most of the time out-of-order packets are not // duplicate packets, so subtract them from the lost packets. inErrorcnt -= inOutofOrder; printf( report_bw_jitter_loss_format, mSock, inStart, inStop, bytes, speed, mJitter*1000.0, inErrorcnt, inDatagrams, (100.0 * inErrorcnt) / inDatagrams ); if ( inOutofOrder > 0 ) { printf( report_outoforder, mSock, inStart, inStop, inOutofOrder ); } fflush( stdout ); }