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?
+
}
use Msg;
use IntMsg;
use ExtMsg;
+use AGWMsg;
use DXVars;
use DXDebug;
use DXLog;
use BadWords;
use Data::Dumper;
+use IO::File;
use Fcntl ':flock';
use POSIX ":sys_wait_h";
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 );
+use vars qw(@inqueue $systime $version $starttime $lockfn @outstanding_connects
+ $zombies $root @listeners $lang $myalias @debug $userfn $clusteraddr
+ $clusterport $mycall $decease $build $is_win
+ );
@inqueue = (); # the main input queue, an array of hashes
$systime = 0; # the time now (in seconds)
dbg('chan', "-> D $call $mess\n");
$conn->send_now("D$call|$mess");
- sleep(2);
+ Msg->sleep(2);
$conn->disconnect;
}
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);
$_->close_server;
}
- dbg('chan', "DXSpider version $version ended");
- Log('cluster', "DXSpider V$version stopped");
+ dbg('chan', "DXSpider version $version, build $build ended");
+ Log('cluster', "DXSpider V$version, build $build ended");
dbgclose();
Logclose();
unlink $lockfn;
}
STDOUT->autoflush(1);
-Log('cluster', "DXSpider V$version started");
+# calculate build number
+$build = $main::version;
+
+if (opendir(DIR, "$main::root/perl")) {
+ my @d = readdir(DIR);
+ closedir(DIR);
+ foreach my $fn (@d) {
+ if ($fn =~ /^cluster\.pl$/ || $fn =~ /\.pm$/) {
+ my $f = new IO::File "$main::root/perl/$fn" or next;
+ while (<$f>) {
+ if (/^#\s+\$Id:\s+[\w\._]+,v\s+(\d+\.\d+)/ ) {
+ $build += $1;
+ last;
+ }
+ }
+ $f->close;
+ }
+ }
+}
+
+Log('cluster', "DXSpider V$version, build $build started");
# banner
-dbg('err', "DXSpider DX Cluster Version $version", "Copyright (c) 1998-2001 Dirk Koopman G1TLH");
+dbg('err', "DXSpider Version $version, build $build started", "Copyright (c) 1998-2001 Dirk Koopman G1TLH");
# load Prefixes
dbg('err', "loading prefixes ...");
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
-unless ($^O =~ /^MS/) {
+unless ($is_win) {
unless ($DB::VERSION) {
$SIG{INT} = \&cease;
$SIG{TERM} = \&cease;
DXDb::process();
DXUser::process();
DXDupe::process();
-
+ AGWMsg::process();
+
eval {
Local::process(); # do any localised processing
};