From: djk Date: Thu, 18 Nov 1999 23:22:10 +0000 (+0000) Subject: changed ping regime to be a rolling list of up to ten X-Git-Tag: R_1_35~23 X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=commitdiff_plain;h=f534cd884051603e9f0368b912afa355e7a2310f;p=spider.git changed ping regime to be a rolling list of up to ten an ak1a disconnect will always send a PC39 --- diff --git a/perl/DXChannel.pm b/perl/DXChannel.pm index dce4fb50..9f7b8d18 100644 --- a/perl/DXChannel.pm +++ b/perl/DXChannel.pm @@ -81,8 +81,7 @@ use vars qw(%channels %valid); pingint => '9,Ping Interval ', nopings => '9,Ping Obs Count', lastping => '9,Ping last sent,atime', - pingrec => '9,Pings no rec', - pingtime => '9,Ping totaltime', + pingtime => '9,Ping totaltime,parray', pingave => '0,Ping ave time', ); diff --git a/perl/DXProt.pm b/perl/DXProt.pm index 9888380a..67f64b79 100644 --- a/perl/DXProt.pm +++ b/perl/DXProt.pm @@ -136,8 +136,7 @@ sub start $self->pingint($user->pingint || 3*60); $self->nopings(3); $self->lastping($main::systime); - $self->pingtime(0); - $self->pingrec(0); + $self->pingtime([ ]); Log('DXProt', "$call connected"); } @@ -711,14 +710,18 @@ sub normal my $t = tv_interval($r->{t}, [ gettimeofday ]); if ($dxchan->is_user) { my $s = sprintf "%.2f", $t; - my $ave = $tochan->pingave if $tochan; + my $ave = sprintf "%.2f", $tochan ? ($tochan->pingave || $t) : $t; $dxchan->send($dxchan->msg('pingi', $field[2], $s, $ave)) } elsif ($dxchan->is_ak1a) { if ($tochan) { $tochan->nopings(3); # pump up the timer - $tochan->{pingtime} += $t; - $tochan->{pingrec} += 1; - $tochan->{pingave} = $tochan->{pingtime} / $tochan->{pingrec}; + push @{$tochan->pingtime}, $t; + shift @{$tochan->pingtime} if @{$tochan->pingtime} > 10; + my $st; + for (@{$tochan->pingtime}) { + $st += $_; + } + $tochan->{pingave} = $st / @{$tochan->pingtime}; } } } @@ -806,6 +809,8 @@ sub finish my $call = $self->call; my $ref = DXCluster->get_exact($call); + $self->send_now("D", DXProt::pc39($main::mycall, $self->msg('disc1', "System Op"))); + # unbusy and stop and outgoing mail my $mref = DXMsg::get_busy($call); $mref->stop_msg($call) if $mref;