--- deliantra/server/ext/map-random.ext 2007/01/21 21:28:27 1.9 +++ deliantra/server/ext/map-random.ext 2007/01/27 02:19:37 1.11 @@ -54,35 +54,33 @@ } sub clean_random_maps { - cf::async { - my $files = Coro::AIO::aio_readdir $cf::RANDOM_MAPS - or return; + my $files = Coro::AIO::aio_readdir $cf::RANDOM_MAPS + or return; + + my $META_TIMEOUT = $cf::CFG{map_random_meta_timeout} || 86400 * 7; + my $MAP_TIMEOUT = $cf::CFG{map_random_map_timeout} || 3600 * 6; + + for my $file (@$files) { + next if $file =~ /\.pst$/; - my $META_TIMEOUT = $cf::CFG{map_random_meta_timeout} || 86400 * 7; - my $MAP_TIMEOUT = $cf::CFG{map_random_map_timeout} || 3600 * 6; + Coro::AIO::aio_stat "$cf::RANDOM_MAPS/$file" + and next; - for my $file (@$files) { - next if $file =~ /\.pst$/; + my $age = $cf::NOW - (stat _)[8]; - Coro::AIO::aio_stat "$cf::RANDOM_MAPS/$file" - and next; - - my $age = $cf::NOW - (stat _)[8]; - - if ($file =~ /\.meta$/) { - if ($age > $META_TIMEOUT) { - warn "resetting random meta data for $file"; - IO::AIO::aio_unlink "$cf::RANDOM_MAPS/$file"; - } - } else { - if ($age > $MAP_TIMEOUT) { - warn "resetting random map $file"; - IO::AIO::aioreq_pri 4; IO::AIO::aio_unlink "$cf::RANDOM_MAPS/$file"; - IO::AIO::aioreq_pri 4; IO::AIO::aio_unlink "$cf::RANDOM_MAPS/$file.pst"; - } + if ($file =~ /\.meta$/) { + if ($age > $META_TIMEOUT) { + warn "resetting random meta data for $file"; + IO::AIO::aio_unlink "$cf::RANDOM_MAPS/$file"; + } + } else { + if ($age > $MAP_TIMEOUT) { + warn "resetting random map $file"; + IO::AIO::aioreq_pri 4; IO::AIO::aio_unlink "$cf::RANDOM_MAPS/$file"; + IO::AIO::aioreq_pri 4; IO::AIO::aio_unlink "$cf::RANDOM_MAPS/$file.pst"; } } - }; + } } # clean up old temp maps regularly @@ -91,8 +89,26 @@ data => cf::WF_AUTOCANCEL, interval => 3600, after => 60, - cb => \&clean_random_maps, + cb => Coro::unblock_sub { clean_random_maps }, ); +# map generator stresstest, never enable under normal circumstances +if (0) { + cf::async { + my $seed = 0; + while () { + my $map = cf::map::new; + $map->generate_random_map ({ + region => "scorn", + random_seed => $seed++, + xsize => 12, + ysize => 12, + }); + #warn sprintf "%d: %d %d\n", $seed, $map->width, $map->height;#d# + $map->destroy; + } + }; +} + 1