use Local;
use Fcntl ':flock';
-use Carp;
+use Carp qw(cluck);
package main;
@inqueue = (); # the main input queue, an array of hashes
$systime = 0; # the time now (in seconds)
-$version = "1.28"; # the version no of the software
+$version = "1.31"; # the version no of the software
$starttime = 0; # the starting time of the cluster
$lockfn = "cluster.lock"; # lock file name
Local::finish(); # end local processing
};
dbg('local', "Local::finish error $@") if $@;
-
+
+ # disconnect users
+ foreach $dxchan (DXChannel->get_all()) {
+ next if $dxchan->is_ak1a;
+ disconnect($dxchan) unless $dxchan == $DXProt::me;
+ }
+ 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);
+
+ # disconnect nodes
foreach $dxchan (DXChannel->get_all()) {
+ next unless $dxchan->is_ak1a;
disconnect($dxchan) unless $dxchan == $DXProt::me;
}
Msg->event_loop(1, 0.05);
dbg('chan', "DXSpider version $version ended");
Log('cluster', "DXSpider V$version stopped");
dbgclose();
+ Logclose();
unlink $lockfn;
+# $SIG{__WARN__} = $SIG{__DIE__} = sub {my $a = shift; cluck($a); };
exit(0);
}
my $data = $self->{data};
my $dxchan = $self->{dxchan};
- my ($sort, $call, $line) = $data =~ /^(\w)(\S+)\|(.*)$/;
+ my ($sort, $call, $line) = $data =~ /^(\w)([A-Z0-9\-]+)\|(.*)$/;
# the above regexp must work
return unless ($sort && $call && $line);
$starttime = $systime = time;
# open the debug file, set various FHs to be unbuffered
+dbginit();
foreach (@debug) {
dbgadd($_);
}
DXCommandmode::process(); # process ongoing command mode stuff
DXProt::process(); # process ongoing ak1a pcxx stuff
DXConnect::process();
+ DXMsg::process();
eval {
Local::process(); # do any localised processing
};