Changeset 6655
- Timestamp:
- 02/14/08 07:36:10 (5 years ago)
- Location:
- lang/perl/Cache-Memcached-libmemcached/trunk
- Files:
-
- 3 modified
-
Makefile.PL (modified) (1 diff)
-
lib/Cache/Memcached/libmemcached.pm (modified) (15 diffs)
-
t/01_load.t (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
lang/perl/Cache-Memcached-libmemcached/trunk/Makefile.PL
r5720 r6655 5 5 all_from('lib/Cache/Memcached/libmemcached.pm'); 6 6 7 requires('Memcached::libmemcached', '0.140 2');7 requires('Memcached::libmemcached', '0.1405'); 8 8 requires('Storable'); 9 9 requires('Carp'); -
lang/perl/Cache-Memcached-libmemcached/trunk/lib/Cache/Memcached/libmemcached.pm
r5734 r6655 7 7 use strict; 8 8 use warnings; 9 use base qw(Memcached::libmemcached); 9 10 use Carp qw(croak); 10 use Memcached::libmemcached ();11 11 use Storable (); 12 12 13 13 our $VERSION = '0.01000'; 14 15 use constant MEMD_BACKEND => 0;16 use constant MEMD_COMPRESS_ENABLE => 1;17 use constant MEMD_COMPRESS_THRESHOLD => 2;18 use constant MEMD_COMPRESS_SAVINGS => 3;19 14 20 15 use constant HAVE_ZLIB => eval { require Compress::Zlib } && !$@; … … 26 21 # accessors 27 22 foreach my $field qw(compress_enable compress_threshold compress_savings) { 28 eval sprintf(<<" EOSUB", $field, uc $field, $field, uc $field); 29 sub set_%s { 30 my \$self = shift; 31 \$self->[ MEMD_%s ] = shift; 32 } 33 34 sub get_%s { 35 shift->[ MEMD_%s ]; 36 } 23 eval sprintf(<<" EOSUB", $field, $field, $field, $field); 24 sub set_%s { \$_[0]->{%s} = \$_[1] } 25 sub get_%s { \$_[0]->{%s} } 37 26 EOSUB 38 27 die if $@; … … 40 29 41 30 # proxy these methods 42 foreach my $method qw(delete getset add replace prepend append cas) {31 foreach my $method qw(delete set add replace prepend append cas) { 43 32 eval <<" EOSUB"; 44 sub $method { 45 Memcached::libmemcached::memcached_$method(shift->[MEMD_BACKEND], \@_) 46 } 33 sub $method { shift->memcached_$method(\@_) } 47 34 EOSUB 48 35 die if $@; … … 63 50 $args->{servers} || die "No servers specified"; 64 51 65 my $memd = Memcached::libmemcached::memcached_create(); 66 my $self = bless [], $class; 67 68 $self->[MEMD_BACKEND] = $memd; 69 $self->[MEMD_COMPRESS_THRESHOLD] = $args->{compress_threshold}; 70 $self->[MEMD_COMPRESS_SAVINGS] = $args->{compress_savings} || 0.20; 71 $self->[MEMD_COMPRESS_ENABLE] = 52 my $self = $class->SUPER::new(); 53 54 $self->{compress_threshold} = $args->{compress_threshold}; 55 $self->{compress_savingsS} = $args->{compress_savings} || 0.20; 56 $self->{compress_enable} = 72 57 exists $args->{compress_enable} ? $args->{compress_enable} : 1; 73 58 … … 76 61 77 62 # Set compression/serialization callbacks 78 Memcached::libmemcached::memcached_set_callback_coderefs($memd,63 $self->set_callback_coderefs( 79 64 # Closures so we have reference to $self 80 65 $self->_mk_callbacks() … … 103 88 # check for existance of : 104 89 if (my ($hostname, $port) = split(/:/, $server)) { 105 Memcached::libmemcached::memcached_server_add( $self->[MEMD_BACKEND],$hostname, $port );90 $self->memcached_server_add($hostname, $port ); 106 91 } else { 107 Memcached::libmemcached::memcached_server_add_unix( $self->[MEMD_BACKEND],$server );92 $self->memcached_server_add_uni( $server ); 108 93 } 109 }110 111 sub get_multi112 {113 my $self = shift;114 my $hv = {};115 Memcached::libmemcached::memcached_mget_into_hashref($self->[MEMD_BACKEND], [ @_ ], $hv);116 return $hv;117 94 } 118 95 … … 144 121 145 122 # Check if we need compression 146 if (HAVE_ZLIB && $self-> [MEMD_COMPRESS_ENABLE] && $self->[MEMD_COMPRESS_THRESHOLD]) {123 if (HAVE_ZLIB && $self->{compress_enable} && $self->{compress_threshold}) { 147 124 # Find the byte length 148 125 my $length = bytes::length($_); 149 if ($length > $self-> [MEMD_COMPRESS_THRESHOLD]) {126 if ($length > $self->{compress_threshold}) { 150 127 my $tmp = Compress::Zlib::memGzip($_); 151 if (1 - bytes::length($tmp) / $length < $self-> [MEMD_COMPRESS_SAVINGS]) {128 if (1 - bytes::length($tmp) / $length < $self->{compress_savingsS}) { 152 129 $_ = $tmp; 153 130 $_[1] |= F_COMPRESS; … … 166 143 $_[1] ||= 1 if @_ < 2; 167 144 my $val = 0; 168 Memcached::libmemcached::memcached_increment($self->[MEMD_BACKEND],@_[0,1], $val);145 $self->memcached_increment(@_[0,1], $val); 169 146 return $val; 170 147 } … … 176 153 $_[1] ||= 1 if @_ < 2; 177 154 my $val = 0; 178 Memcached::libmemcached::memcached_decrement($self->[MEMD_BACKEND],@_[0,1], $val);155 $self->memcached_decrement(@_[0,1], $val); 179 156 return $val; 180 157 } … … 182 159 sub flush_all 183 160 { 184 my $self = shift; 185 Memcached::libmemcached::memcached_flush($self->[MEMD_BACKEND], 0); 161 $_[0]->memcached_flush(0); 186 162 } 187 163 … … 190 166 sub disconnect_all 191 167 { 192 my $self = shift; 193 Memcached::libmemcached::memcached_quit($self->[MEMD_BACKEND]); 168 $_[0]->memcached_quit(); 194 169 } 195 170 … … 198 173 sub is_no_block 199 174 { 200 shift-> behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_NO_BLOCK() );175 shift->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_NO_BLOCK() ); 201 176 } 202 177 203 178 sub set_no_block 204 179 { 205 shift-> behavior_set(180 shift->memcached_behavior_set( 206 181 Memcached::libmemcached::MEMCACHED_BEHAVIOR_NO_BLOCK(), 207 182 $_[0] … … 211 186 sub get_distribution_method 212 187 { 213 shift-> behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_DISTRIBUTION() );188 shift->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_DISTRIBUTION() ); 214 189 } 215 190 216 191 sub set_distribution_method 217 192 { 218 shift-> behavior_set(193 shift->memcached_behavior_set( 219 194 Memcached::libmemcached::MEMCACHED_BEHAVIOR_DISTRIBUTION(), 220 195 $_[0] … … 224 199 sub get_hashing_algorithm 225 200 { 226 shift-> behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_HASH() );201 shift->memcached_behavior_get( Memcached::libmemcached::MEMCACHED_BEHAVIOR_HASH() ); 227 202 } 228 203 229 204 sub set_hashing_algorithm 230 205 { 231 shift-> behavior_set(206 shift->memcached_behavior_set( 232 207 Memcached::libmemcached::MEMCACHED_BEHAVIOR_HASH(), 233 208 $_[0] 234 209 ); 235 }236 237 sub behavior_get238 {239 my $self = shift;240 Memcached::libmemcached::memcached_behavior_get($self->[MEMD_BACKEND], @_);241 }242 243 sub behavior_set244 {245 my $self = shift;246 Memcached::libmemcached::memcached_behavior_set($self->[MEMD_BACKEND], @_);247 210 } 248 211 … … 293 256 Cache::Memcached::libmemcached attempts to be API compatible with 294 257 Cache::Memcached, so it can be used as a drop-in replacement. 258 259 Note that as of version 0.02000, Cache::Memcached::libmemcached I<inherits> 260 from Memcached::libmemcached. While you are free to use the 261 Memcached::libmemcached specific methods directly on the object, you should 262 use them with care, as it will mean that your code is no longer compatible 263 with the Cache::Memcached API therefore losing some of th portability in 264 case you want to replace it with some other package. 295 265 296 266 =head1 FOR Cache::Memcached::LibMemcached USERS -
lang/perl/Cache-Memcached-libmemcached/trunk/t/01_load.t
r5734 r6655 6 6 qw(new get get_multi set stats disconnect_all set_servers flush_all), 7 7 qw(is_no_block set_no_block get_distribution_method set_distribution_method get_hashing_algorithm set_hashing_algorithm), 8 qw(behavior_set behavior_get)9 8 ) );
![(please configure the [header_logo] section in trac.ini)](/share/chrome/site/your_project_logo.png)