ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/ext/map-tags.ext
(Generate patch)

Comparing deliantra/server/ext/map-tags.ext (file contents):
Revision 1.13 by root, Wed Dec 5 11:08:34 2007 UTC vs.
Revision 1.17 by root, Fri Oct 23 03:08:34 2009 UTC

2 2
3our $SCHEDULE_INTERVAL = $cf::CFG{extractor_schedule_interval} || 3600; 3our $SCHEDULE_INTERVAL = $cf::CFG{extractor_schedule_interval} || 3600;
4 4
5use JSON::XS; 5use JSON::XS;
6 6
7my $db_mapinfo = cf::sync_job { cf::db_table "tag-mapinfo" }; # info/cache for maps 7our $db_mapinfo = cf::sync_job { cf::db_table "tag-mapinfo" }; # info/cache for maps
8my $db_target = cf::sync_job { cf::db_table "tag-target" }; # tag => maps 8our $db_target = cf::sync_job { cf::db_table "tag-target" }; # tag => maps
9 9
10sub remove_tag_target { 10sub remove_tag_target {
11 my ($txn, $tag, $target) = @_; 11 my ($txn, $tag, $target) = @_;
12 # - U O 12 # - U O
13 13
84 warn "tag-updated $file (= $key) <@tags>\n" 84 warn "tag-updated $file (= $key) <@tags>\n"
85 if @tags; 85 if @tags;
86} 86}
87 87
88sub scan_static { 88sub scan_static {
89 my ($dir, $map) = @_; 89 my $maps = cf::map::static_maps;
90 90
91 my ($dirs, $files) = Coro::AIO::aio_scandir $dir, 2 91 scan_map "s$_", "$cf::MAPDIR$_.map";
92 or return;
93
94 for my $file (@$files) {
95 my $name = $file;
96 next unless $name =~ s/\.map$//;
97 utf8::decode $name;
98
99 scan_map "s$map$name", "$dir/$file";
100 }
101
102 &scan_static ("$dir/$_", "$map$_/")
103 for @$dirs; 92 for @$maps;
104} 93}
105 94
106sub reload { 95sub reload {
107 my $guard = cf::lock_acquire "map-tags::reload"; 96 my $guard = cf::lock_acquire "map-tags::reload";
108 97
178 $Coro::current->prio (Coro::PRIO_MIN); 167 $Coro::current->prio (Coro::PRIO_MIN);
179 $Coro::current->desc ("map-tag scanner"); 168 $Coro::current->desc ("map-tag scanner");
180 reload; 169 reload;
181}; 170};
182 171
183cf::async { reload }; # force at startup 172cf::post_init {
173 $RELOAD_SCHEDULER->invoke (0); # force at startup
174};
184 175
185# find all objects with the given tag, or at least try to 176# find all objects with the given tag, or at least try to
186sub find($) { 177sub find($) {
187 my ($tag) = @_; 178 my ($tag) = @_;
188 179

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines