File Coverage

blib/lib/Pixie/Store/Memory.pm
Criterion Covered Total %
statement 25 57 43.8
branch 1 10 10.0
condition n/a
subroutine 9 17 52.9
pod 7 13 53.8
total 42 97 43.3


line stmt bran cond sub pod time code
1             package Pixie::Store::Memory;
2              
3             our $VERSION="2.06";
4              
5 14     14   150818 use Storable qw/nfreeze thaw/;
  14         510717  
  14         1318  
6              
7 14     14   111 use base qw/Pixie::Store/;
  14         33  
  14         17540  
8              
9             sub new {
10 37     37 0 53 my $proto = shift;
11 37         122 my $self = bless {}, $proto;
12 37         94 $self->init;
13 37         126 return $self;
14             }
15              
16             sub init {
17 37     37 0 55 my $self = shift;
18 37         182 $self->{store} = {};
19 37         87 $self->{rootset} = {};
20 37         69 return $self;
21             }
22              
23              
24             sub connect {
25 37     37 1 68 my $self = shift;
26 37 50       155 $self = ref($self) ? $self : $self->new;
27             }
28              
29             sub remove_from_rootset {
30 0     0 0 0 my $self = shift;
31 0         0 my $oid = shift;
32 0         0 delete $self->{rootset}{$oid};
33 0         0 return $self;
34             }
35              
36              
37             sub _add_to_rootset {
38 0     0   0 my $self = shift;
39 0         0 my $thing = shift;
40 0         0 $self->{rootset}{$thing->PIXIE::oid} = 1;
41 0         0 return $self;
42             }
43              
44             sub rootset {
45 0     0 0 0 my $self = shift;
46 0         0 keys %{$self->{rootset}};
  0         0  
47             }
48              
49              
50             sub working_set_for {
51 0     0 0 0 my $self = shift;
52 0         0 my @ret = keys %{$self->{store}};
  0         0  
53 0 0       0 return wantarray ? @ret : \@ret;
54             }
55              
56             sub _delete {
57 0     0   0 my $self = shift;
58 0         0 my($oid) = @_;
59 0 0       0 defined(delete $self->{store}{$oid}) ? 1 : 0;
60             }
61              
62             sub store_at {
63 0     0 1 0 my $self = shift;
64 0         0 my($oid, $obj) = @_;
65              
66 0 0       0 if ($oid) {
67 0         0 $self->{store}{$oid} = nfreeze($obj);
68 0         0 return($oid, $obj);
69             }
70             else {
71 0         0 return $obj;
72             }
73             }
74              
75             sub get_object_at {
76 0     0 1 0 my $self = shift;
77 0         0 my($oid) = @_;
78              
79 0         0 return thaw $self->{store}{$oid};
80             }
81              
82 17     17 1 46 sub lock { }
83 19     19 1 45 sub unlock { }
84 19     19 1 49 sub rollback { }
85              
86             sub clear {
87 9     9 1 19 my $self = shift;
88              
89 9         17 %{$self->{store}} = ();
  9         29  
90 9         16 %{$self->{rootset}} = ();
  9         61  
91 9         24 return $self;
92             }
93              
94             sub delete_object_at {
95 0     0 0   my $self = shift;
96 0           my($oid) = @_;
97              
98 0 0         if (defined(wantarray)) {
99 0           return thaw delete $self->{store}{$oid};
100             }
101             else {
102 0           delete $self->{store}{$oid};
103             }
104             }
105              
106             1;