lrem
authorDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 22 Mar 2009 13:37:49 +0000 (13:37 +0000)
committerDobrica Pavlinusic <dpavlin@rot13.org>
Sun, 22 Mar 2009 13:37:49 +0000 (13:37 +0000)
git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/Redis@26 447b33ff-793d-4489-8442-9bea7d161be5

lib/Redis.pm
t/01-Redis.t

index cb78dc9..31d7eb0 100644 (file)
@@ -77,7 +77,7 @@ sub _sock_result_bulk {
        _sock_read_bulk();
 }
 
        _sock_read_bulk();
 }
 
-sub _sock_ok {
+sub __sock_ok {
        my $ok = <$sock>;
        confess dump($ok) unless $ok eq "+OK\r\n";
 }
        my $ok = <$sock>;
        confess dump($ok) unless $ok eq "+OK\r\n";
 }
@@ -93,16 +93,27 @@ sub _sock_send_ok {
        my $self = shift;
        warn "## _sock_send_ok ",dump( @_ );
        print $sock join(' ',@_) . "\r\n";
        my $self = shift;
        warn "## _sock_send_ok ",dump( @_ );
        print $sock join(' ',@_) . "\r\n";
-       _sock_ok();
+       __sock_ok();
 }
 
 }
 
-sub _sock_send_bulk {
+sub __sock_send_bulk_raw {
        my $self = shift;
        my $self = shift;
+       warn "## _sock_send_bulk ",dump( @_ );
        my $value = pop;
        print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n";
        my $value = pop;
        print $sock join(' ',@_) . ' ' . length($value) . "\r\n$value\r\n";
-       _sock_ok();
 }
 
 }
 
+sub _sock_send_bulk {
+       __sock_send_bulk_raw( @_ );
+       __sock_ok();
+}
+
+sub _sock_send_bulk_number {
+       __sock_send_bulk_raw( @_ );
+       my $v = _sock_result();
+       confess $v unless $v =~ m{^\-?\d+$};
+       return $v;
+}
 
 =head1 Connection Handling
 
 
 =head1 Connection Handling
 
@@ -349,6 +360,17 @@ sub lset {
        $self->_sock_send_bulk( 'LSET', $key, $index, $value );
 }
 
        $self->_sock_send_bulk( 'LSET', $key, $index, $value );
 }
 
+=head2 lrem
+
+  $r->lrem( $key, $count, $value );
+
+=cut
+
+sub lrem {
+       my ( $self, $key, $count, $value ) = @_;
+       $self->_sock_send_bulk_number( 'LREM', $key, $count, $value );
+}
+
 =head1 AUTHOR
 
 Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>
 =head1 AUTHOR
 
 Dobrica Pavlinusic, C<< <dpavlin at rot13.org> >>
index d43655a..d478a7b 100755 (executable)
@@ -3,7 +3,7 @@
 use warnings;
 use strict;
 
 use warnings;
 use strict;
 
-use Test::More tests => 67;
+use Test::More tests => 69;
 
 use lib 'lib';
 
 
 use lib 'lib';
 
@@ -102,4 +102,7 @@ cmp_ok( $o->lindex( $list, 1 ), 'eq', 'r1', 'lindex' );
 ok( $o->lset( $list, 0, 'foo' ), 'lset' );
 cmp_ok( $o->lindex( $list, 0 ), 'eq', 'foo', 'verified' );
 
 ok( $o->lset( $list, 0, 'foo' ), 'lset' );
 cmp_ok( $o->lindex( $list, 0 ), 'eq', 'foo', 'verified' );
 
+ok( $o->lrem( $list, 1, 'foo' ), 'lrem' );
+cmp_ok( $o->llen( $list ), '==', 1, 'llen after lrem' );
+
 ok( $o->quit, 'quit' );
 ok( $o->quit, 'quit' );