bug 3651 followup: updated for new GetMember() parameter style
[koha.git] / C4 / Cache.pm
1 package C4::Cache;
2
3 # Copyright 2009 Chris Cormack and The Koha Dev Team
4 #
5 # This file is part of Koha.
6 #
7 # Koha is free software; you can redistribute it and/or modify it under the
8 # terms of the GNU General Public License as published by the Free Software
9 # Foundation; either version 2 of the License, or (at your option) any later
10 # version.
11 #
12 # Koha is distributed in the hope that it will be useful, but WITHOUT ANY
13 # WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
14 # A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License along with
17 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
18 # Suite 330, Boston, MA  02111-1307 USA
19
20 =head1 NAME
21
22     C4::Cache - Handling caching of html and Objects for Koha
23
24 =head1 SYNOPSIS
25
26   use C4::Cache (cache_type => $cache_type, %params );
27
28
29 =head1 DESCRIPTION
30
31   Base class for C4::Cache::X. Subclasses need to provide the following methods
32
33   B<_cache_handle  ($params_hr)> - cache handle creator                         
34   B<set_in_cache   ($key, $value, $expiry)>                                     
35   B<get_from_cache ($key)>                                                      
36   B<clear_from_cache ($key)>                                                    
37   B<flush_all      ()>  
38
39 =head1 FUNCTIONS
40
41 =cut
42
43 use strict;
44 use warnings;
45 use Carp;
46
47 use base qw(Class::Accessor);
48
49 use C4::Cache::Memcached;
50 use C4::Cache::FastMemcached;
51
52 __PACKAGE__->mk_ro_accessors( qw( cache ) );
53
54 sub new {
55     my $class = shift;                                                          
56     my %param = @_;                                                             
57     
58     my $cache_type = $param{cache_type} || 'memcached';
59     my $subclass = __PACKAGE__."::".ucfirst($cache_type);
60     my $cache    = $subclass->_cache_handle(\%param)
61       or croak "Cannot create cache handle for '$cache_type'";
62     return bless $class->SUPER::new({cache => $cache}), $subclass;              
63 }
64
65 =head2 EXPORT
66
67   None by default.
68
69 =head1 SEE ALSO
70   
71   C4::Cache::Memcached
72
73 =head1 AUTHOR
74
75 Chris Cormack, E<lt>chris@bigballofwax.co.nzE<gt>
76
77 =cut
78
79 1;
80
81 __END__