made queueing of messages purely periodic

This commit is contained in:
djk 1999-06-29 22:14:31 +00:00
parent 2af6cce23d
commit 813a3e444b
4 changed files with 19 additions and 19 deletions

View File

@ -1,8 +1,9 @@
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.

View File

@ -45,9 +45,9 @@ if ($ENV{'TERM'} =~ /(console|linux)/) {
$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) ],

View File

@ -32,7 +32,8 @@ use Carp;
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
@ -43,6 +44,9 @@ $last_clean = 0; # last time we did a clean
@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
@ -137,7 +141,13 @@ sub process
$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;
@ -173,6 +183,7 @@ sub process
$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;
}
@ -269,7 +280,6 @@ sub process
}
}
$ref->stop_msg($self->call);
queue_msg(0);
} else {
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
@ -292,7 +302,6 @@ sub process
} else {
$self->send(DXProt::pc42($f[2], $f[1], $f[3])); # unknown stream
}
queue_msg(0);
last SWITCH;
}
@ -830,7 +839,6 @@ sub do_send_stuff
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');

View File

@ -437,8 +437,6 @@ sub normal
$user->put;
}
# queue up any messages
DXMsg::queue_msg(0) if $self->state eq 'normal';
return if $newline eq "PC19^";
# add hop count
@ -451,10 +449,6 @@ sub normal
$self->send_local_config();
$self->send(pc22());
$self->state('normal');
# queue mail
DXMsg::queue_msg(0);
return;
}
@ -483,12 +477,9 @@ sub normal
if ($pcno == 22) {
$self->state('normal');
# queue mail
DXMsg::queue_msg(0);
return;
}
if ($pcno == 23 || $pcno == 27) { # WWV info
# route 'foreign' pc27s