X-Git-Url: http://gb7djk.dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fcluster.pl;h=0a66c1db5732a6a2448526ee77d237a734a96026;hb=e39b738850b9a122b60b179e9723e546ddacfd62;hp=b3b4c5a64595547862a84b244d7d0ab14850b0eb;hpb=9630876e30f288575b5343ec2d0b5bb6d67f92cc;p=spider.git diff --git a/perl/cluster.pl b/perl/cluster.pl index b3b4c5a6..0a66c1db 100755 --- a/perl/cluster.pl +++ b/perl/cluster.pl @@ -36,11 +36,15 @@ BEGIN { open(CLLOCK, ">$lockfn") or die "Can't open Lockfile ($lockfn) $!"; print CLLOCK "$$\n"; close CLLOCK; + + $is_win = ($^O =~ /^MS/ || $^O =~ /^OS-2/) ? 1 : 0; # is it Windows? + $systime = time; } use Msg; use IntMsg; use ExtMsg; +use AGWMsg; use DXVars; use DXDebug; use DXLog; @@ -78,7 +82,7 @@ package main; use strict; use vars qw(@inqueue $systime $version $starttime $lockfn @outstanding_connects $zombies $root @listeners $lang $myalias @debug $userfn $clusteraddr - $clusterport $mycall $decease $build + $clusterport $mycall $decease $build $is_win ); @inqueue = (); # the main input queue, an array of hashes @@ -97,7 +101,7 @@ sub already_conn dbg('chan', "-> D $call $mess\n"); $conn->send_now("D$call|$mess"); - sleep(2); + Msg->sleep(2); $conn->disconnect; } @@ -214,6 +218,10 @@ sub cease next if $dxchan->is_node; $dxchan->disconnect unless $dxchan == $DXProt::me; } + + # disconnect AGW + AGWMsg::finish(); + Msg->event_loop(1, 0.05); Msg->event_loop(1, 0.05); Msg->event_loop(1, 0.05); @@ -296,6 +304,12 @@ sub uptime my $mins = int $t / 60; return sprintf "%d %02d:%02d", $days, $hours, $mins; } + +sub AGWrestart +{ + AGWMsg::init(\&new_channel); +} + ############################################################# # # The start of the main line of code @@ -363,12 +377,13 @@ for (@main::listen) { push @listeners, $conn; dbg('err', "External Port: $_->[0] $_->[1]"); } +AGWrestart(); # load bad words dbg('err', "load badwords: " . (BadWords::load or "Ok")); # prime some signals -unless ($^O =~ /^MS/) { +unless ($is_win) { unless ($DB::VERSION) { $SIG{INT} = \&cease; $SIG{TERM} = \&cease; @@ -461,7 +476,8 @@ for (;;) { DXDb::process(); DXUser::process(); DXDupe::process(); - + AGWMsg::process(); + eval { Local::process(); # do any localised processing };