NAME
CGI::MxScreen::Serializer - Abstract serializer interface
SYNOPSIS
# Deferred class, only heirs may be instantiated
# In heirs:
use base qw(CGI::MxScreen::Serializer);
sub make { # define the creation routine
...
$self->_init(\&freeze, \&thaw, $compress);
}
# Access interface - $ser is an instantiated heir
my $serialized = $ser->serialize($ref);
my $deserialized = $ser->deserialize($serialized);
DESCRIPTION
This module implements a serializer abstraction and should probably be a CPAN module of its own. I'm seriously thinking about it.
The CGI::MxScreen::Serializer
class is deferred. The only thing it lacks is a creation routine, which will initialize the freeze
and thaw
attributes with code references to the proper freezing and thawing routines.
It bluntly assumes those routine will conform to the following signatures:
freeze(x: REF): STRING
thaw(x: STRING): REF
and satisfy the following condition, for every x:
thaw(freeze(x)).deep_equal(x)
where deep_equal is an operation testing that its arguments are structurally equivalent, whatever that means.
This class also supports on-the-fly compression and decompression of the serialized data via Compress::Zlib
.
SUPPORTED SERIALIZERS
Currently, the only serializer available is CGI::MxScreen::Serializer::Storable
which is simply installing Storable
.
INTERFACE
Attributes
The following read-only attributes are defined. The are meant to be initialized at creation time via _init()
:
compress
-
A boolean flag, stating whether
Compress::Zlib
compression and decompression should be performed. freezer
-
A CODE reference on the freezing routine.
thawer
-
A CODE reference on the thawing routine.
Routines
_init
freezer, thawer, compress_flag-
This routine must be called by the
make()
routine in heirs to initialize the attributes. deserialize
frozen-
Deserialize the frozen serialized string generated by
serialize()
and return a reference to its root object. serialize
reference-
Serialize the reference and return a string that can be deserialized by
deserialize
.
AUTHOR
Raphael Manfredi <Raphael_Manfredi@pobox.com>
SEE ALSO
CGI::MxScreen::Serializer::Storable(3).