projects
/
spider.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
better win detection
[spider.git]
/
perl
/
cluster.pl
diff --git
a/perl/cluster.pl
b/perl/cluster.pl
index b3b4c5a64595547862a84b244d7d0ab14850b0eb..a8a2cc8ea587bf300952873fc318dcb25fed7c05 100755
(executable)
--- a/
perl/cluster.pl
+++ b/
perl/cluster.pl
@@
-41,6
+41,7
@@
BEGIN {
use Msg;
use IntMsg;
use ExtMsg;
use Msg;
use IntMsg;
use ExtMsg;
+use AGWMsg;
use DXVars;
use DXDebug;
use DXLog;
use DXVars;
use DXDebug;
use DXLog;
@@
-78,7
+79,7
@@
package main;
use strict;
use vars qw(@inqueue $systime $version $starttime $lockfn @outstanding_connects
$zombies $root @listeners $lang $myalias @debug $userfn $clusteraddr
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
);
@inqueue = (); # the main input queue, an array of hashes
@@
-88,6
+89,8
@@
$starttime = 0; # the starting time of the cluster
$lockfn = "cluster.lock"; # lock file name
#@outstanding_connects = (); # list of outstanding connects
@listeners = (); # list of listeners
$lockfn = "cluster.lock"; # lock file name
#@outstanding_connects = (); # list of outstanding connects
@listeners = (); # list of listeners
+$is_win = ($^O =~ /^MS/ || $^O =~ /^OS-2/) ? 1 : 0; # is it Windows?
+
# send a message to call on conn and disconnect
# send a message to call on conn and disconnect
@@
-97,7
+100,7
@@
sub already_conn
dbg('chan', "-> D $call $mess\n");
$conn->send_now("D$call|$mess");
dbg('chan', "-> D $call $mess\n");
$conn->send_now("D$call|$mess");
- sleep(2);
+
Msg->
sleep(2);
$conn->disconnect;
}
$conn->disconnect;
}
@@
-214,6
+217,10
@@
sub cease
next if $dxchan->is_node;
$dxchan->disconnect unless $dxchan == $DXProt::me;
}
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);
Msg->event_loop(1, 0.05);
Msg->event_loop(1, 0.05);
Msg->event_loop(1, 0.05);
@@
-363,12
+370,13
@@
for (@main::listen) {
push @listeners, $conn;
dbg('err', "External Port: $_->[0] $_->[1]");
}
push @listeners, $conn;
dbg('err', "External Port: $_->[0] $_->[1]");
}
+AGWMsg::init(\&new_channel);
# load bad words
dbg('err', "load badwords: " . (BadWords::load or "Ok"));
# prime some signals
# 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;
unless ($DB::VERSION) {
$SIG{INT} = \&cease;
$SIG{TERM} = \&cease;
@@
-461,7
+469,8
@@
for (;;) {
DXDb::process();
DXUser::process();
DXDupe::process();
DXDb::process();
DXUser::process();
DXDupe::process();
-
+ AGWMsg::process();
+
eval {
Local::process(); # do any localised processing
};
eval {
Local::process(); # do any localised processing
};