Changeset 818

Show
Ignore:
Timestamp:
07/20/09 09:13:31 (4 months ago)
Author:
dormando
Message:

Add append/prepend support.

Location:
trunk/api/perl
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • trunk/api/perl/lib/Cache/Memcached.pm

    r811 r818  
    441441} 
    442442 
     443sub append { 
     444    _set("append", @_); 
     445} 
     446 
     447sub prepend { 
     448    _set("prepend", @_); 
     449} 
     450 
    443451sub _set { 
    444452    my $cmdname = shift; 
     
    452460    use bytes; # return bytes from length() 
    453461 
     462    my $app_or_prep = $cmdname eq 'append' || $cmdname eq 'prepend' ? 1 : 0; 
    454463    $self->{'stats'}->{$cmdname}++; 
    455464    my $flags = 0; 
     
    457466 
    458467    if (ref $val) { 
     468        die "append or prepend cannot take a reference" if $app_or_prep; 
    459469        local $Carp::CarpLevel = 2; 
    460470        $val = Storable::nfreeze($val); 
     
    466476 
    467477    if ($self->{'compress_threshold'} && $HAVE_ZLIB && $self->{'compress_enable'} && 
    468         $len >= $self->{'compress_threshold'}) { 
     478        $len >= $self->{'compress_threshold'} && !$app_or_prep) { 
    469479 
    470480        my $c_val = Compress::Zlib::memGzip($val); 
  • trunk/api/perl/t/02_keys.t

    r605 r818  
    1010                                  Timeout  => 3); 
    1111if ($msock) { 
    12     plan tests => 13; 
     12    plan tests => 20; 
    1313} else { 
    1414    plan skip_all => "No memcached instance running at $testaddr\n"; 
     
    3737ok(! $memd->get("key1"), "get key1 properly failed"); 
    3838 
     39ok(! $memd->append("key-noexist", "bogus"), "append key-noexist properly failed"); 
     40ok(! $memd->prepend("key-noexist", "bogus"), "prepend key-noexist properly failed"); 
     41 
     42ok($memd->set("key3", "base"), "set key3 to base"); 
     43ok($memd->append("key3", "-end"), "appended -end to key3"); 
     44ok($memd->get("key3", "base-end"), "key3 is base-end"); 
     45ok($memd->prepend("key3", "start-"), "prepended start- to key3"); 
     46ok($memd->get("key3", "start-base-end"), "key3 is base-end"); 
    3947 
    4048# also test creating the object with a list rather than a hash-ref