From: minima Date: Wed, 11 Jan 2006 22:41:25 +0000 (+0000) Subject: fix the process issues so that xml pings are automatically sent X-Git-Tag: R_1_52~26 X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?p=spider.git;a=commitdiff_plain;h=8a1c916b7e4a09542aecc8a488028ce556aed1ab fix the process issues so that xml pings are automatically sent --- diff --git a/perl/DXXml.pm b/perl/DXXml.pm index cd8abf59..a351510c 100644 --- a/perl/DXXml.pm +++ b/perl/DXXml.pm @@ -90,8 +90,44 @@ sub normal # # note that this a function not a method # + +my $last10; +my $last_hour; + sub process { + my $t = time; + my @dxchan = DXChannel::get_all(); + my $dxchan; + + foreach $dxchan (@dxchan) { + next unless $dxchan->is_node; + next unless $dxchan->handle_xml; + next if $dxchan == $main::me; + + # send a ping out on this channel + if ($dxchan->{pingint} && $t >= $dxchan->{pingint} + $dxchan->{lastping}) { + if ($dxchan->{nopings} <= 0) { + $dxchan->disconnect; + } else { + DXXml::Ping::add($main::me, $dxchan->call); + $dxchan->{nopings} -= 1; + $dxchan->{lastping} = $t; + $dxchan->{lastping} += $dxchan->{pingint} / 2 unless @{$dxchan->{pingtime}}; + } + } + } + + + # every ten seconds + if (!$last10 || $t - $last10 >= 10) { + $last10 = $t; + } + + # every hour + if (!$last_hour || $main::systime - 3600 > $last_hour) { + $last_hour = $main::systime; + } }