From 88067d37b162f6f59e3cab709ddfc76d7eb098d6 Mon Sep 17 00:00:00 2001 From: dms Date: Sun, 24 Nov 2002 16:53:25 +0000 Subject: [PATCH] - initial layout for Scheduler II. - dbReplace () => sqlReplace {} - writing uptime should work now. git-svn-id: https://svn.code.sf.net/p/infobot/code/trunk/blootbot@711 c11ca15a-4712-0410-83d8-924469b57eb5 --- src/IRC/Schedulers.pl | 62 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 52 insertions(+), 10 deletions(-) diff --git a/src/IRC/Schedulers.pl b/src/IRC/Schedulers.pl index 44aff68..21b157b 100644 --- a/src/IRC/Schedulers.pl +++ b/src/IRC/Schedulers.pl @@ -8,7 +8,47 @@ # use strict; # TODO use POSIX qw(strftime); -use vars qw(%sched); +use vars qw(%sched %schedule); + +# format: function name = ( +# str chanconfdefault, +# int internaldefault, +# bool deferred, +# int next run, (optional) +# ) + +#%schedule = { +# uptimeLoop => ("", 60, 1), +#}; + +sub setupSchedulersII { + foreach (keys %schedule) { + &queueTask($_, @{ $schedule{$_} }); + } +} + +sub queueTask { + my($codename, $chanconfdef, $intervaldef, $defer) = @_; + my $t = &getChanConfDefault($chanconfdef, $intervaldef); + my $waittime = &getRandomInt($t); + + if (!defined $waittime) { + &WARN("interval == waittime == UNDEF for $codename."); + return; + } + + my $time = $schedule{$codename}[3]; + if (defined $time and $time > time()) { + &WARN("Sched for $codename already exists."); + return; + } + +# &VERB("Scheduling \&$codename() for ".&Time2String($waittime),3); + + my $retval = $conn->schedule($waittime, sub { + \&$codename; + }, @args ); +} sub setupSchedulers { &VERB("Starting schedulers...",2); @@ -39,6 +79,7 @@ sub setupSchedulers { &kernelLoop(2); &wingateWriteFile(2); &factoidCheck(2); # takes a couple of seconds on a 486. defer it +# todo: convert to new format... or nuke altogether. &newsFlush(1); # todo: squeeze this into a one-liner. @@ -356,7 +397,6 @@ sub newsFlush { } if ($delete or $duser) { - &News::writeNews(); &status("NewsFlush: deleted: $delete news entries; $duser user cache."); } } @@ -549,13 +589,14 @@ sub seenFlush { if ($param{'DBType'} =~ /^(mysql|pgsql|sqlite|dbm)$/i) { foreach $nick (keys %seencache) { - my $retval = &dbReplace("seen", "nick", ( - "nick" => lc $seencache{$nick}{'nick'}, - "time" => $seencache{$nick}{'time'}, - "host" => $seencache{$nick}{'host'}, - "channel" => $seencache{$nick}{'chan'}, - "message" => $seencache{$nick}{'msg'}, - ) ); + my $retval = &sqlReplace("seen", { + nick => lc $seencache{$nick}{'nick'}, + time => $seencache{$nick}{'time'}, + host => $seencache{$nick}{'host'}, + channel => $seencache{$nick}{'chan'}, + message => $seencache{$nick}{'msg'}, + } ); + delete $seencache{$nick}; $flushed++; } @@ -839,7 +880,8 @@ sub getNickInUse { } sub uptimeLoop { - return unless &IsChanConf("uptime"); + return if (!defined &uptimeWriteFile); +# return unless &IsChanConf("uptime"); if (@_) { &ScheduleThis(60, "uptimeLoop"); -- 2.39.2