MojoX-Session-Store-Memcached

 view release on metacpan or  search on metacpan

lib/MojoX/Session/Store/Memcached.pm  view on Meta::CPAN

package MojoX::Session::Store::Memcached;

use strict;
use warnings;

use base 'MojoX::Session::Store';
use Cache::Memcached;

__PACKAGE__->attr('memcached_connector');

our $VERSION = '0.01';

sub new {
    my($class,$param)=@_;
    my $self = $class->SUPER::new();
    bless $self,$class;
    
    if( ref $param->{servers} ne  'ARRAY' ){
        $param->{servers} = [$param->{servers}];
    }
    
    $self->memcached_connector(Cache::Memcached->new($param));
    
    return $self;
}

sub create {
    my ($self, $sid, $expires, $data) = @_;
    
    my $new_data = {
        data    => $data,
        expires => $expires
    };
    my $res = $self->{memcached_connector}->set($sid,$new_data);
    
    return $res;
}

sub update {
    my ($self, $sid, $expires, $data) = @_;
    
    my $new_data = {
        data    => $data,
        expires => $expires
    };
    
    my $res = $self->{memcached_connector}->replace($sid,$new_data);
    
    return $res;
}

sub load {
    my ($self, $sid) = @_;
    my $memd = $self->{memcached_connector};
    my $res = $memd->get($sid);
    
    return ($res->{expires},$res->{data});
}

sub delete {
    my ($self, $sid) = @_;
    
    my $res = $self->{memcached_connector}->delete($sid);
    
    return;
}

1;
__END__

=head1 NAME

MojoX::Session::Store::Memcached - Memcached Store for MojoX::Session

=head1 SYNOPSIS

    my $session = MojoX::Session->new(
        tx        => $tx,
        # all params as for Cache::Memcached
        store     => MojoX::Session::Store::Memcached->new({
            servers => [127.0.0.1:11211]
        }),
        transport => MojoX::Session::Transport::Cookie->new,
        ip_match  => 1
    );

    # see doc for MojoX::Session

=head1 DESCRIPTION

L<MojoX::Session::Store::Memcached> is a store for L<MojoX::Session> that stores a
session in a memcached daemon .

=head1 ATTRIBUTES

L<MojoX::Session::Store::Memcached> implements the following attributes.

=head2 C<memcached_connector>
    



( run in 0.470 second using v1.01-cache-2.11-cpan-39bf76dae61 )