29Jun99=======================================================================
1. fixed merge command that I broke.
2. added some randomness in waittimes for aborted outgoing messages
-3. made the queueing of messages asymetrical. Both of these to try to
-minimise thrashing.
+3. Message Queuing now only occurs every 5 minutes (configurable if anyone
+wants to write the command for doing it) nad on receipt of a PC16. This is
+a further attempt at sorting the crossing of messages!
28Jun99=======================================================================
1. console.pl now works with history and editting.
2. added scrolling to stuff sent by the cluster.
$background = COLOR_BLACK();
@colors = (
[ '^DX de [\-\w]+:\s+(14[45]\d\d\d|5[01]\d\d\d)', COLOR_PAIR(1) ],
- [ '^DX', COLOR_PAIR(5) ],
+ [ '^DX', COLOR_PAIR(4) ],
[ '^To', COLOR_PAIR(3) ],
- [ '^WWV', COLOR_PAIR(4) ],
+ [ '^WWV', COLOR_PAIR(5) ],
[ '^[-A-Z0-9]+ de [-A-Z0-9]+ \d\d-\w\w\w-\d\d\d\d \d\d\d\dZ', COLOR_PAIR(0) ],
[ '^[-A-Z0-9]+ de [-A-Z0-9]+ ', COLOR_PAIR(6) ],
[ '^WX', COLOR_PAIR(3) ],
use strict;
use vars qw(%work @msg $msgdir %valid %busy $maxage $last_clean
- @badmsg $badmsgfn $forwardfn @forward $timeout $waittime);
+ @badmsg $badmsgfn $forwardfn @forward $timeout $waittime
+ $queueinterval $lastq);
%work = (); # outstanding jobs
@msg = (); # messages we have
@forward = (); # msg forward table
$timeout = 30*60; # forwarding timeout
$waittime = 60*60; # time an aborted outgoing message waits before trying again
+$queueinterval = 5*60; # run the queue every 5 minutes
+$lastq = 0;
+
$badmsgfn = "$msgdir/badmsg.pl"; # list of TO address we wont store
$forwardfn = "$msgdir/forward.pl"; # the forwarding table
$ref->{waitt} = $main::systime + $waittime + rand(120) if $node ne $main::mycall;
}
}
-
+
+ # queue some message if the interval timer has gone off
+ if ($main::systime > $lastq + $queueinterval) {
+ queue_msg(0);
+ $lastq = $main::systime;
+ }
+
# clean the message queue
clean_old() if $main::systime - $last_clean > 3600 ;
return;
$work{"$f[2]$stream"} = $ref; # store in work
$busy{$f[2]} = $ref; # set interlock
$self->send(DXProt::pc30($f[2], $f[1], $stream)); # send ack
+ $ref->{lastt} = $main::systime;
last SWITCH;
}
}
}
$ref->stop_msg($self->call);
- queue_msg(0);
} else {
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
} else {
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
- queue_msg(0);
last SWITCH;
}
delete $self->{loc};
$self->func(undef);
- DXMsg::queue_msg(0);
$self->state('prompt');
} elsif ($line eq "\031" || uc $line eq "/ABORT" || uc $line eq "/QUIT") {
#push @out, $self->msg('sendabort');
$user->put;
}
- # queue up any messages
- DXMsg::queue_msg(0) if $self->state eq 'normal';
return if $newline eq "PC19^";
# add hop count
$self->send_local_config();
$self->send(pc22());
$self->state('normal');
-
- # queue mail
- DXMsg::queue_msg(0);
-
return;
}
if ($pcno == 22) {
$self->state('normal');
-
- # queue mail
- DXMsg::queue_msg(0);
return;
}
-
+
if ($pcno == 23 || $pcno == 27) { # WWV info
# route 'foreign' pc27s