… | |
… | |
2 | |
2 | |
3 | our $SCHEDULE_INTERVAL = $cf::CFG{extractor_schedule_interval} || 3600; |
3 | our $SCHEDULE_INTERVAL = $cf::CFG{extractor_schedule_interval} || 3600; |
4 | |
4 | |
5 | use JSON::XS; |
5 | use JSON::XS; |
6 | |
6 | |
7 | my $db_mapinfo = cf::sync_job { cf::db_table "tag-mapinfo" }; # info/cache for maps |
7 | our $db_mapinfo = cf::sync_job { cf::db_table "tag-mapinfo" }; # info/cache for maps |
8 | my $db_target = cf::sync_job { cf::db_table "tag-target" }; # tag => maps |
8 | our $db_target = cf::sync_job { cf::db_table "tag-target" }; # tag => maps |
9 | |
9 | |
10 | sub remove_tag_target { |
10 | sub 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 | |
88 | sub scan_static { |
88 | sub 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 | |
106 | sub reload { |
95 | sub reload { |
107 | my $guard = cf::lock_acquire "map-tags::reload"; |
96 | my $guard = cf::lock_acquire "map-tags::reload"; |
108 | |
97 | |