Revision 3 (by ahitrov@rambler.ru, 2010/03/24 15:19:32) The CORE
package Contenido::Cache::Memcached;

use strict;
use warnings 'all';
use base qw(Cache::BaseCache);

use Contenido::Cache::MemcachedBackend;
use Contenido::Errors qw(warn);
use Contenido::Logger;


###########################################
# Cache::BaseCache interface implementation
###########################################

sub new {
	my ($class, $opts) = @_;
	my $self = Cache::BaseCache::_new(@_);
	$self->_set_backend(Contenido::Cache::MemcachedBackend->new($opts));
	$self->_complete_initialization;
	$self;
}

sub Clear {
	my ($self) = @_;
	$self->_not_implemented('Clear');
}

sub Purge {
	my ($self) = @_;
	$self->_not_implemented('Purge');
}

sub Size {
	my ($self) = @_;
	$self->_not_implemented('Size');
}

sub set {
	my $self = shift;
	my ($key, $data, $expires_in) = @_;

	if ($expires_in eq 'never') {
		Contenido::Logger->instance->warning("No 'expires_in' specified, caching impossible for key '$key'");
		$self->SUPER::set($key, $data, 84600);
		return;
	}
	$self->SUPER::set(@_);
} 


###################
# Internal routines
###################

sub _not_implemented {
	my ($self, $meth) = @_;
	warn "WARNING! ".ref($self)."::$meth not implemented\n";
}


1;