/[Redis.pre-github]/lib/Redis/List.pm
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /lib/Redis/List.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 29 - (hide annotations)
Sun Mar 22 16:16:11 2009 UTC (15 years, 2 months ago) by dpavlin
File size: 1318 byte(s)
Redis::List to tie perl arrays
1 dpavlin 29 package Redis::List;
2    
3     use strict;
4     use warnings;
5    
6     use base qw/Redis Tie::Array/;
7    
8     =head1 NAME
9    
10     Redis::List - tie perl arrays into Redis lists
11    
12     =head1 SYNOPSYS
13    
14     tie @a, 'Redis::List', 'name';
15    
16     =cut
17    
18     # mandatory methods
19     sub TIEARRAY {
20     my ($class,$name) = @_;
21     my $self = $class->new;
22     $self->{name} = $name;
23     bless $self => $class;
24     }
25    
26     sub FETCH {
27     my ($self,$index) = @_;
28     $self->lindex( $self->{name}, $index );
29     }
30    
31     sub FETCHSIZE {
32     my ($self) = @_;
33     $self->llen( $self->{name} );
34     }
35    
36     sub STORE {
37     my ($self,$index,$value) = @_;
38     $self->lset( $self->{name}, $index, $value );
39     }
40    
41     sub STORESIZE {
42     my ($self,$count) = @_;
43     $self->ltrim( $self->{name}, 0, $count );
44     # if $count > $self->FETCHSIZE;
45     }
46    
47     sub CLEAR {
48     my ($self) = @_;
49     $self->del( $self->{name} );
50     }
51    
52     sub PUSH {
53     my $self = shift;
54     $self->rpush( $self->{name}, $_ ) foreach @_;
55     }
56    
57     sub SHIFT {
58     my $self = shift;
59     $self->lpop( $self->{name} );
60     }
61    
62     sub UNSHIFT {
63     my $self = shift;
64     $self->lpush( $self->{name}, $_ ) foreach @_;
65     }
66    
67     sub SPLICE {
68     my $self = shift;
69     my $offset = shift;
70     my $length = shift;
71     $self->lrange( $self->{name}, $offset, $length );
72     # FIXME rest of @_ ?
73     }
74    
75     sub EXTEND {
76     my ($self,$count) = @_;
77     $self->rpush( $self->{name}, '' ) foreach ( $self->FETCHSIZE .. ( $count - 1 ) );
78     }
79    
80     sub DESTROY {
81     my $self = shift;
82     $self->quit;
83     }
84    
85     1;

  ViewVC Help
Powered by ViewVC 1.1.26