INSTALLATION:

perl Makefile.PL
make
make test
make install

If you are on a windows box you should use 'nmake' rather than 'make'.


NAME
   Class::Prevayler - Prevayler implementation - www.prevayler.org

SYNOPSIS
     use Class::Prevayler;

     my $prevayler = Class::Prevayler->new(
                           system          => new Your::System,
                           directory       => 'prevayler/demo/'
                   );

     $prevayler->start();

     my $cmd_obj = Your::Command::Object->new();

     $prevayler->execute( $cmd_obj );

     $prevayler->take_snapshot();

DESCRIPTION
   THIS IS BETA-SOFTWARE!!

   Class::Prevayler - aka 'Perlvayler' - is a Perl implementation of the
   prevayler concept.

   You can find an introduction to this concept on www.prevayler.org.

   This module overloads the 'time', 'localtime' and 'gmtime' functions to
   make the system deterministic.

USAGE
 new

    Usage     : $prevayler->new()
    Purpose   : creates a new object
    Returns   : the new prevayler-object
    Argument  : you can use key-value pairs to initialize the attributes

 start

    Usage     : $prevayler->start()
    Purpose   : recovers the old system state
    Returns   : nothing
    Argument  : none
    Comments  : You have to call it before you can use execute(), even if there is no old serialized state

 take_snapshot

    Usage     : $prevayler->take_snapshot()
    Purpose   : produce a serialized image of the system
    Returns   : nothing
    Argument  : command object
    Comments  : all command objects must implement a 'execute()' method

 system

    Usage     :    $prevayler->system( new My::System )
                   my $system = $prevayler->system();
    Purpose   : access to the prevalent system
    Returns   : returns the actual system if called without argument
    Argument  : new prevalent system

 directory

    Usage     :    $prevayler->directory( './prevayler/' )
                   my $directory = $prevayler->directory();
    Purpose   : sets the directory where all serialized objects are stored
    Returns   : returns the actual directory if called without argument
    Argument  : new directory

 serializer

    Usage     :    $prevayler->serializer( \&mySerializer )
                   my $serializer = $prevayler->serializer();
    Purpose   : define the serializer.
                   The serializer is called with a structure (an object)
                   and returns a string representation of this structure.
                   The default serializer is implemented with Data::Dumper.
    Returns   : returns the actual serializer if called without argument
    Argument  : reference to a subroutine

 deserializer

    Usage     :    $prevayler->deserializer( \&myDeSerializer )
                   my $deserializer = $prevayler->deserializer();
    Purpose   : define the deserializer.
                   The deserializer is called with a serialized structure
                   and returns this structure.
                   The default deserializer is implemented with eval.
    Returns   : returns the actual deserializer if called without argument
    Argument  : reference to a subroutine

BUGS
   - none known, but: this is beta-software, there will be API and
   fileformat changes.

AUTHOR
           Nathanael Obermayer
           CPAN ID: nathanael
           [email protected]

COPYRIGHT
   This program is free software; you can redistribute it and/or modify it
   under the same terms as Perl itself.

   The full text of the license can be found in the LICENSE file included
   with this module.

SEE ALSO
   perl(1).

   http://www.prevayler.org