Example #1
0
/*
 * 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 );
}
Example #3
0
/*
 * 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 );
}