diff -w -c Cache-Memcached-1.14/Memcached.pm Cache-Memcached-1.14-rbuf/Memcached.pm
*** Cache-Memcached-1.14/Memcached.pm	Tue Jul 27 17:07:04 2004
--- Cache-Memcached-1.14-rbuf/Memcached.pm	Sun May  6 08:06:24 2007
***************
*** 383,388 ****
--- 383,405 ----
      _set("set", @_);
  }
  
+ 
+ sub rpush {
+     _set("push", @_);
+ }
+ 
+ sub ring {
+     my Cache::Memcached $self = shift;
+     my ($key, $exptime, $capacity) = @_;
+     my $flags = 0;
+     my $line = "ring $self->{namespace}$key $flags $exptime $capacity\r\n";
+     my $sock = $self->get_sock($key);
+     
+     my $res = _oneline($self, $sock, $line);
+     
+     return $res eq "STORED\r\n";
+ }
+ 
  sub _set {
      my $cmdname = shift;
      my Cache::Memcached $self = shift;
***************
*** 511,520 ****
      return \%val;
  }
  
  sub _load_multi {
      use bytes; # return bytes from length()
      my Cache::Memcached $self = shift;
!     my ($sock_keys, $ret) = @_;
  
      # all keyed by a $sock:
      my %reading; # bool, whether we're reading from this socket
--- 528,571 ----
      return \%val;
  }
  
+ sub rget {
+     my Cache::Memcached $self = shift;
+     my ($key) = @_;
+ 
+     $self->{'_stime'} = Time::HiRes::time() if $self->{'stat_callback'};
+     $self->{'stats'}->{"get_multi"}++;
+     my %val;        # what we'll be returning a reference to (realkey -> value)
+     my %sock_keys;  # sockref_as_scalar -> [ realkeys ]
+     my $sock;
+ 
+     $sock = $self->get_sock($key);
+     #print STDERR " sock:$sock [KEY:$key]\n";
+     return undef unless $sock;
+     my $kval = ref $key ? $key->[1] : $key;
+     push @{$sock_keys{$sock}}, $kval;
+ 
+     $self->{'stats'}->{"get_rgets"} ++;
+     $self->{'stats'}->{"get_socks"} += keys %sock_keys;
+ 
+     local $SIG{'PIPE'} = "IGNORE" unless $FLAG_NOSIGNAL;
+ 
+     _load_multi($self, \%sock_keys, \%val, 'rget');
+ 
+     if ($self->{'debug'}) {
+         while (my ($k, $v) = each %val) {
+ 	  print STDERR "MemCache: got $k = $v\n";
+         }
+     }
+ 
+     return $val{$kval};
+ }
+ 
  sub _load_multi {
      use bytes; # return bytes from length()
      my Cache::Memcached $self = shift;
!     my ($sock_keys, $ret, $cmd) = @_;
! 
!     $cmd ||= 'get';
  
      # all keyed by a $sock:
      my %reading; # bool, whether we're reading from this socket
***************
*** 529,535 ****
      foreach (keys %$sock_keys) {
          print STDERR "processing socket $_\n" if $self->{'debug'} >= 2;
          $writing{$_} = 1;
!         $buf{$_} = "get ". join(" ", map { "$self->{namespace}$_" } @{$sock_keys->{$_}}) . "\r\n";
      }
  
      my $active_changed = 1; # force rebuilding of select sets
--- 580,586 ----
      foreach (keys %$sock_keys) {
          print STDERR "processing socket $_\n" if $self->{'debug'} >= 2;
          $writing{$_} = 1;
!         $buf{$_} = $cmd . " ". join(" ", map { "$self->{namespace}$_" } @{$sock_keys->{$_}}) . "\r\n";
      }
  
      my $active_changed = 1; # force rebuilding of select sets
Common subdirectories: Cache-Memcached-1.14/blib and Cache-Memcached-1.14-rbuf/blib
Common subdirectories: Cache-Memcached-1.14/t and Cache-Memcached-1.14-rbuf/t
