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