From: miker <miker@9efc2488-bf62-4759-914b-345cdb29e865>
Date: Thu, 7 Apr 2005 22:25:26 +0000 (+0000)
Subject: added initial limiter and cache population
X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=14d9f98431a290dc9a88cceb338f04adafddc77a;p=working%2FOpenSRF.git

added initial limiter and cache population


git-svn-id: svn://svn.open-ils.org/OpenSRF/trunk@268 9efc2488-bf62-4759-914b-345cdb29e865
---

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;