From 14d9f98431a290dc9a88cceb338f04adafddc77a Mon Sep 17 00:00:00 2001 From: miker Date: Thu, 7 Apr 2005 22:25:26 +0000 Subject: [PATCH] added initial limiter and cache population git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@268 9efc2488-bf62-4759-914b-345cdb29e865 --- src/perlmods/OpenSRF/Utils/Cache.pm | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/perlmods/OpenSRF/Utils/Cache.pm b/src/perlmods/OpenSRF/Utils/Cache.pm index 5d2a29b..91ea8f1 100644 --- a/src/perlmods/OpenSRF/Utils/Cache.pm +++ b/src/perlmods/OpenSRF/Utils/Cache.pm @@ -3,7 +3,9 @@ use strict; use warnings; use base qw/Cache::Memcached OpenSRF/; use Cache::Memcached; use OpenSRF::Utils::Config; +use OpenSRF::Utils::SettingsClient; use OpenSRF::EX qw(:try); +use JSON; =head OpenSRF::Utils::Cache @@ -59,13 +61,18 @@ sub current { # create a new named memcache object. sub new { - my( $class, $cache_type, $persist, $servers ) = @_; - return undef unless $cache_type; + my( $class, $cache_type, $persist ) = @_; + $cache_type ||= 'global'; + $class = ref( $class ) || $class; + return $caches{$cache_type} - if exists $caches{$cache_type}; + if (defined $caches{$cache_type}); + + my $conf = OpenSRF::Utils::SettingsClient->new; + my $servers = $conf->config_value( cache => $cache_type => servers => 'server' ); + my $expire_time = $conf->config_value( cache => $cache_type => servers => 'max_cache_time' ); - $class = ref( $class ) || $class; my $self = {}; $self->{persist} = $persist || 0; $self->{memcache} = Cache::Memcached->new( { servers => $servers } ); @@ -82,7 +89,9 @@ sub new { sub put_cache { my($self, $key, $value, $expiretime ) = @_; - return undef unless( $key and $value ); + return undef unless( defined $key and defined $value ); + + $value = JSON->perl2JSON($value); if($self->{persist}){ _load_methods(); } @@ -143,7 +152,7 @@ sub get_cache { } else { $self->{memcache}->set( $key, $val, $max_persist_time); } - return $val; + return JSON->JSON2perl($val); } } return undef; -- 2.43.2