forked from osmocom/wireshark
Switch from a 20 segment moving average to a 1 second MA. Add a #define
to allow switching back to the old behavior. Note that goToPacket can jump to the wrong packet if we have a display filter applied. svn path=/trunk/; revision=51801
This commit is contained in:
parent
52c9e57474
commit
297d1994f8
|
@ -715,6 +715,7 @@ void PacketList::goLastPacket(void) {
|
||||||
setCurrentIndex(moveCursor(MoveEnd, Qt::NoModifier));
|
setCurrentIndex(moveCursor(MoveEnd, Qt::NoModifier));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// XXX We can jump to the wrong packet if a display filter is applied
|
||||||
void PacketList::goToPacket(int packet) {
|
void PacketList::goToPacket(int packet) {
|
||||||
if (packet > 0 && packet <= packet_list_model_->rowCount()) {
|
if (packet > 0 && packet <= packet_list_model_->rowCount()) {
|
||||||
setCurrentIndex(packet_list_model_->index(packet - 1, 0));
|
setCurrentIndex(packet_list_model_->index(packet - 1, 0));
|
||||||
|
|
|
@ -37,7 +37,13 @@
|
||||||
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
|
// The GTK+ version computes a 20 (or 21!) segment moving average. Comment
|
||||||
|
// out the line below to use that. By default we use a 1 second MA.
|
||||||
|
#define MA_1_SECOND
|
||||||
|
|
||||||
|
#ifndef MA_1_SECOND
|
||||||
const int moving_avg_period_ = 20;
|
const int moving_avg_period_ = 20;
|
||||||
|
#endif
|
||||||
const QRgb graph_color_1 = tango_sky_blue_5;
|
const QRgb graph_color_1 = tango_sky_blue_5;
|
||||||
const QRgb graph_color_2 = tango_butter_6;
|
const QRgb graph_color_2 = tango_butter_6;
|
||||||
|
|
||||||
|
@ -318,9 +324,12 @@ void TCPStreamDialog::initializeStevens()
|
||||||
|
|
||||||
void TCPStreamDialog::initializeThroughput()
|
void TCPStreamDialog::initializeThroughput()
|
||||||
{
|
{
|
||||||
QString dlg_title = QString(tr("Throughput"))
|
QString dlg_title = QString(tr("Throughput")) + streamDescription();
|
||||||
+ streamDescription()
|
#ifdef MA_1_SECOND
|
||||||
+ QString(tr(" (%1 segment MA)")).arg(moving_avg_period_);
|
dlg_title.append(tr(" (1 s MA)"));
|
||||||
|
#else
|
||||||
|
dlg_title.append(QString(tr(" (%1 segment MA)")).arg(moving_avg_period_));
|
||||||
|
#endif
|
||||||
setWindowTitle(dlg_title);
|
setWindowTitle(dlg_title);
|
||||||
title_->setText(dlg_title);
|
title_->setText(dlg_title);
|
||||||
|
|
||||||
|
@ -337,7 +346,10 @@ void TCPStreamDialog::initializeThroughput()
|
||||||
|
|
||||||
QVector<double> rel_time, seg_len, tput;
|
QVector<double> rel_time, seg_len, tput;
|
||||||
struct segment *oldest_seg = graph_.segments;
|
struct segment *oldest_seg = graph_.segments;
|
||||||
int i = 1, sum = 0;
|
#ifndef MA_1_SECOND
|
||||||
|
int i = 1;
|
||||||
|
#endif
|
||||||
|
int sum = 0;
|
||||||
// Financial charts don't show MA data until a full period has elapsed.
|
// Financial charts don't show MA data until a full period has elapsed.
|
||||||
// The Rosetta Code MA examples start spitting out values immediately.
|
// The Rosetta Code MA examples start spitting out values immediately.
|
||||||
// For now use not-really-correct initial values just to keep our vector
|
// For now use not-really-correct initial values just to keep our vector
|
||||||
|
@ -345,12 +357,18 @@ void TCPStreamDialog::initializeThroughput()
|
||||||
for (struct segment *seg = graph_.segments->next; seg != NULL; seg = seg->next) {
|
for (struct segment *seg = graph_.segments->next; seg != NULL; seg = seg->next) {
|
||||||
double rt_val = seg->rel_secs + seg->rel_usecs / 1000000.0;
|
double rt_val = seg->rel_secs + seg->rel_usecs / 1000000.0;
|
||||||
|
|
||||||
// XXX Skip zero-length segments?
|
#ifdef MA_1_SECOND
|
||||||
|
while (rt_val - (oldest_seg->rel_secs + oldest_seg->rel_usecs / 1000000.0) > 1.0) {
|
||||||
|
oldest_seg = oldest_seg->next;
|
||||||
|
sum -= oldest_seg->th_seglen;
|
||||||
|
}
|
||||||
|
#else
|
||||||
if (i > moving_avg_period_) {
|
if (i > moving_avg_period_) {
|
||||||
oldest_seg = oldest_seg->next;
|
oldest_seg = oldest_seg->next;
|
||||||
sum -= oldest_seg->th_seglen;
|
sum -= oldest_seg->th_seglen;
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
|
#endif
|
||||||
|
|
||||||
double dtime = rt_val - (oldest_seg->rel_secs + oldest_seg->rel_usecs / 1000000.0);
|
double dtime = rt_val - (oldest_seg->rel_secs + oldest_seg->rel_usecs / 1000000.0);
|
||||||
double av_tput;
|
double av_tput;
|
||||||
|
|
Loading…
Reference in New Issue