OpenFrame::AppKit::Session - sessions for OpenFrame


OpenFrame-AppKit documentation Contained in the OpenFrame-AppKit distribution.

Index


Code Index:

NAME

Top

OpenFrame::AppKit::Session - sessions for OpenFrame

SYNOPSIS

Top

  use OpenFrame::AppKit::Session;

  my $session = OpenFrame::AppKit::Session->new();

  my $id = $session->id();
  $session->store();

  my $restored = OpenFrame::AppKit::Session->fetch( $id );

DESCRIPTION

Top

OpenFrame::AppKit::Session provides a session class that is capable of being stored and restored from disk. The session expects you to treat it as a standard HASH for all intents and purposes, but does allow you to encapsulate that with the methods get and set for top level keys.

METHODS

Top

* new

The new() method instantiates a new OpenFrame::AppKit::Session and returns it.

* init

The init() method provides initialization routines for OpenFrame::AppKit::Session

* id

The id() method returns the sessions id

* generate_id

The generate_id() method returns a new id, or the old id if it has already been generated.

* store

The store() method serializes the session to disk. It returns the session id that can be used to restore the session.

* fetch

The fetch() method takes a session id as a parameter and returns a restored session from disk. In the case that the session is unavailable it returns nothing.

* get

The get() method simply returns a key as specified by the first parameter and returns its value.

* set

The set() method simply sets a key value pair as specified by the first two parameters.

SEE ALSO

Top

OpenFrame::AppKit::Segment::Sesssion

AUTHOR

Top

James A. Duncan <jduncan@fotango.com>

COPYRIGHT

Top


OpenFrame-AppKit documentation Contained in the OpenFrame-AppKit distribution.

package OpenFrame::AppKit::Session;

use strict;
use warnings::register;

use Cache::FileCache;
use Digest::MD5 qw(md5_hex);

our $VERSION=3.03;

sub new {
  my $class = shift;
  my $self  = {};
  bless $self, $class;
  $self->init();
  return $self;
}

sub init {
  my $self = shift;
  $self->generate_id;
}

sub id {
  my $self = shift;
  return $self->{_id};
}

sub generate_id {
  my $self = shift;
  return $self->{_id} if exists $self->{_id};
  my $id = substr(md5_hex(time() . md5_hex(time(). {}. rand(). $$)), 0, 16);
  $self->{_id} = $id;
}

sub store {
  my $self = shift;
  Cache::FileCache->new()->set( $self->id, $self );
  return $self->id;
}

sub fetch {
  my $class = shift;
  my $id    = shift;
  return Cache::FileCache->new()->get( $id );
}

sub get {
  my $self = shift;
  my $key  = shift;
  return $self->{ $key };
}

sub set {
  my $self = shift;
  my $key  = shift;
  $self->{ $key } = shift;
  return $self;
}

1;