K2LL33D SHELL

 Apache/2.4.7 (Ubuntu)
 Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 safemode : OFF
 MySQL: ON | Perl: ON | cURL: OFF | WGet: ON
  >  / usr / share / perl5 / Debconf / DbDriver /
server ip : 172.67.156.115

your ip : 172.69.58.147

H O M E


Filename/usr/share/perl5/Debconf/DbDriver/Cache.pm
Size4.71 kb
Permissionrw-r--r--
Ownerroot : root
Create time27-Apr-2025 09:50
Last modified23-Feb-2014 22:30
Last accessed06-Jul-2025 10:57
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
#!/usr/bin/perl -w
# This file was preprocessed, do not edit!


package Debconf::DbDriver::Cache;
use strict;
use Debconf::Log qw{:all};
use base 'Debconf::DbDriver';


use fields qw(cache dirty);


sub iterator {
my $this=shift;
my $subiterator=shift;

my @items=keys %{$this->{cache}};
my $iterator=Debconf::Iterator->new(callback => sub {
while (my $item = pop @items) {
next unless defined $this->{cache}->{$item};
return $item;
}
return unless $subiterator;
my $ret;
do {
$ret=$subiterator->iterate;
} while defined $ret and exists $this->{cache}->{$ret};
return $ret;
});
return $iterator;
}


sub exists {
my $this=shift;
my $item=shift;

return $this->{cache}->{$item}
if exists $this->{cache}->{$item};
return 0;
}


sub init {
my $this=shift;

$this->{cache} = {} unless exists $this->{cache};
}


sub cacheadd {
my $this=shift;
my $item=shift;
my $entry=shift;

return if exists $this->{cache}->{$item};

$this->{cache}->{$item}=$entry;
$this->{dirty}->{$item}=0;
}


sub cachedata {
my $this=shift;
my $item=shift;

return $this->{cache}->{$item};
}


sub cached {
my $this=shift;
my $item=shift;

unless (exists $this->{cache}->{$item}) {
debug "db $this->{name}" => "cache miss on $item";
$this->load($item);
}
return $this->{cache}->{$item};
}


sub shutdown {
my $this=shift;

return if $this->{readonly};

my $ret=1;
foreach my $item (keys %{$this->{cache}}) {
if (not defined $this->{cache}->{$item}) {
$ret=undef unless defined $this->remove($item);
delete $this->{cache}->{$item};
}
elsif ($this->{dirty}->{$item}) {
$ret=undef unless defined $this->save($item, $this->{cache}->{$item});
$this->{dirty}->{$item}=0;
}
}
return $ret;
}


sub addowner {
my $this=shift;
my $item=shift;
my $owner=shift;
my $type=shift;

return if $this->{readonly};
$this->cached($item);

if (! defined $this->{cache}->{$item}) {
return if ! $this->accept($item, $type);
debug "db $this->{name}" => "creating in-cache $item";
$this->{cache}->{$item}={
owners => {},
fields => {},
variables => {},
flags => {},
}
}

if (! exists $this->{cache}->{$item}->{owners}->{$owner}) {
$this->{cache}->{$item}->{owners}->{$owner}=1;
$this->{dirty}->{$item}=1;
}
return $owner;
}


sub removeowner {
my $this=shift;
my $item=shift;
my $owner=shift;

return if $this->{readonly};
return unless $this->cached($item);

if (exists $this->{cache}->{$item}->{owners}->{$owner}) {
delete $this->{cache}->{$item}->{owners}->{$owner};
$this->{dirty}->{$item}=1;
}
unless (keys %{$this->{cache}->{$item}->{owners}}) {
$this->{cache}->{$item}=undef;
$this->{dirty}->{$item}=1;
}
return $owner;
}


sub owners {
my $this=shift;
my $item=shift;

return unless $this->cached($item);
return keys %{$this->{cache}->{$item}->{owners}};
}


sub getfield {
my $this=shift;
my $item=shift;
my $field=shift;

return unless $this->cached($item);
return $this->{cache}->{$item}->{fields}->{$field};
}


sub setfield {
my $this=shift;
my $item=shift;
my $field=shift;
my $value=shift;

return if $this->{readonly};
return unless $this->cached($item);
$this->{dirty}->{$item}=1;
return $this->{cache}->{$item}->{fields}->{$field} = $value;
}


sub removefield {
my $this=shift;
my $item=shift;
my $field=shift;

return if $this->{readonly};
return unless $this->cached($item);
$this->{dirty}->{$item}=1;
return delete $this->{cache}->{$item}->{fields}->{$field};
}


sub fields {
my $this=shift;
my $item=shift;

return unless $this->cached($item);
return keys %{$this->{cache}->{$item}->{fields}};
}


sub getflag {
my $this=shift;
my $item=shift;
my $flag=shift;

return unless $this->cached($item);
return $this->{cache}->{$item}->{flags}->{$flag}
if exists $this->{cache}->{$item}->{flags}->{$flag};
return 'false';
}


sub setflag {
my $this=shift;
my $item=shift;
my $flag=shift;
my $value=shift;

return if $this->{readonly};
return unless $this->cached($item);
$this->{dirty}->{$item}=1;
return $this->{cache}->{$item}->{flags}->{$flag} = $value;
}


sub flags {
my $this=shift;
my $item=shift;

return unless $this->cached($item);
return keys %{$this->{cache}->{$item}->{flags}};
}


sub getvariable {
my $this=shift;
my $item=shift;
my $variable=shift;

return unless $this->cached($item);
return $this->{cache}->{$item}->{variables}->{$variable};
}


sub setvariable {
my $this=shift;
my $item=shift;
my $variable=shift;
my $value=shift;

return if $this->{readonly};
return unless $this->cached($item);
$this->{dirty}->{$item}=1;
return $this->{cache}->{$item}->{variables}->{$variable} = $value;
}


sub variables {
my $this=shift;
my $item=shift;

return unless $this->cached($item);
return keys %{$this->{cache}->{$item}->{variables}};
}


1