This file is indexed.

/usr/share/perl5/IPC/PubSub/Cache/JiftyDBI.pm is in libipc-pubsub-perl 0.29-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
package IPC::PubSub::Cache::JiftyDBI;
use strict;
use warnings;
use base 'IPC::PubSub::Cache';
use IPC::PubSub::Cache::JiftyDBI::Stash;

use vars qw/$STASH/;

sub new {
    my $class = shift;
    my $self = {};
    bless $self => $class;
    $STASH ||= IPC::PubSub::Cache::JiftyDBI::Stash->new(@_);

   return $self; 
}

sub disconnect {
    $STASH->handle->disconnect;
}

sub fetch {
    my $self  = shift;
    my @keys_in_order = (@_);
    my $items = IPC::PubSub::Cache::JiftyDBI::Stash::ItemCollection->new( handle => $STASH->handle );
    foreach my $val (@keys_in_order) {
        $items->limit(
            column           => 'data_key',
            entry_aggregator => 'or',
            value            => $val
        );
    }

    my %items = map { $_->data_key, [$_->expiry, $_->val] } @{ $items->items_array_ref };
    return @items{@keys_in_order};
}

sub store {
    my ($self, $key, $val, $time, $expiry) = @_;
    $expiry ||= 0;
    my $item = IPC::PubSub::Cache::JiftyDBI::Stash::Item->new(handle => $STASH->handle);

    $item->load_by_cols( data_key => $key );
    if ( $item->id ) {
        $item->set_val($val);
        $item->set_expiry($time+$expiry);
    }
    else {
        $item->create( data_key => $key, expiry => ($time+$expiry), val => $val );
    }
}

sub publisher_indices {
    my ($self, $chan) = @_;
    my $publishers = IPC::PubSub::Cache::JiftyDBI::Stash::PublisherCollection->new(handle => $STASH->handle);
    $publishers->limit(column => 'channel', value => $chan);
    
    my %indices;
    map {$indices{$_->name} = $_->idx} @{$publishers->items_array_ref};
    return \%indices;

}

sub add_publisher {
    my ($self, $chan, $pub) = @_;

    my $publisher = IPC::PubSub::Cache::JiftyDBI::Stash::Publisher->new(handle => $STASH->handle);
    $publisher->create( channel => $chan, name => $pub, idx => 0);

}

sub remove_publisher {
    my ($self, $chan, $pub) = @_;
    my $publisher = _get_publisher($chan => $pub);
    $publisher->delete();

}

sub get_index {
    my ($self, $chan, $pub) = @_;
    my $publisher =  _get_publisher($chan => $pub);
    if ($publisher->id) {
            return $publisher->idx
        }
    
}

sub set_index {
    my ($self, $chan, $pub, $idx) = @_;
    return _get_publisher($chan => $pub)->set_idx($idx);
}

sub _get_publisher {
    my $chan = shift;
    my $pub = shift;
    my $publisher = IPC::PubSub::Cache::JiftyDBI::Stash::Publisher->new(handle => $STASH->handle);
    $publisher->load_by_cols( channel => $chan, name => $pub);
    return $publisher;
}

1;