Carrot
view release on metacpan or search on metacpan
lib/Carrot/Meta/Greenhouse/Writable_Overlay.pm view on Meta::CPAN
$logical = delete($xedni->{$redirected});
delete($index->{$logical});
$deleted += 1;
} else {
unless (substr($logical, 0, 1) eq '/')
{
$logical = $prefix.$logical;
}
$index->{$logical} = $redirected;
$xedni->{$redirected} = $logical
}
$highest_id = $id;
} else {
die($line);
}
}
$highest_id = int($highest_id);
# if ($deleted > 1_000)
# {
# recreate_index();
# }
return;
}
sub recreate_index
# /type method
# /effect ""
# //parameters
# //returns
{
create_index();
my $keys = [sort(keys($index))];
foreach my $key (@$keys)
{
update_index($index->{$key}, $key);
}
return;
}
sub create_index
# /type method
# /effect ""
# //parameters
# //returns
{
print STDERR "CREATE CACHE $index_file\n" if (TRACE_FLAG);
my $datetime = scalar(gmtime(time()));
$file_content->overwrite_from($index_file,
"# Automatically created on $datetime GMT.\n"
."# Manual changes will get lost.\n");
return;
}
sub update_index
# /type method
# /effect ""
# //parameters
# //returns
{
my ($this, $id, $file_name) = @ARGUMENTS;
if (substr($file_name, 0, 1) ne '/')
{
$prefix = '';
$prefix_fnl = 1;
} elsif (substr($file_name, 0, $prefix_fnl) ne $prefix)
{
foreach my $directory (@MODULE_SEARCH_PATH)
{
next unless (substr($file_name, 0, length($directory)) eq $directory);
$prefix = $directory.'/';
$prefix_fnl = length($prefix);
$file_content->append_from($index_file, $prefix."\n");
$file_name = substr($file_name, $prefix_fnl);
last;
}
} else {
$file_name = substr($file_name, $prefix_fnl);
}
$file_content->append_from($index_file, "$id\t$file_name\n");
return;
}
sub redirect_read
# /type method
# /effect ""
# //parameters
# file_name
# //returns
{
my ($this, $file_name) = @ARGUMENTS;
return(IS_FALSE) unless (REDIRECT_FLAG);
return(IS_FALSE) unless (exists($index->{$$file_name}));
# return(IS_FALSE) if (substr($$file_name, 0, $cache_fnl) eq $cache);
print STDERR "CACHE HIT $$file_name\n" if (TRACE_FLAG);
$$file_name = "$cache/$index->{$$file_name}";
return(IS_TRUE);
}
sub direct_read
# /type method
# /effect ""
# //parameters
# file_name
# //returns
{
my ($this, $file_name) = @ARGUMENTS;
return(IS_UNDEFINED) unless (REDIRECT_FLAG);
( run in 0.538 second using v1.01-cache-2.11-cpan-5a3173703d6 )