File Coverage

blib/lib/Apache/Session/Serialize/UUEncode.pm
Criterion Covered Total %
statement 15 15 100.0
branch 1 2 50.0
condition n/a
subroutine 5 5 100.0
pod 0 2 0.0
total 21 24 87.5


line stmt bran cond sub pod time code
1             #############################################################################
2             #
3             # Apache::Session::Serialize::UUEncode
4             # Serializes session objects using Storable and pack
5             # Copyright(c) 2000 Jeffrey William Baker (jwbaker@acm.org)
6             # Distribute under the Perl License
7             #
8             ############################################################################
9              
10             package Apache::Session::Serialize::UUEncode;
11              
12 1     1   2438 use strict;
  1         2  
  1         41  
13 1     1   5 use vars qw($VERSION);
  1         2  
  1         50  
14 1     1   997 use Storable qw(nfreeze thaw);
  1         3886  
  1         208  
15              
16             $VERSION = '1.01';
17              
18             sub serialize {
19 1     1 0 1329 my $session = shift;
20            
21 1         5 $session->{serialized} = pack("u", nfreeze($session->{data}));
22             }
23              
24             sub unserialize {
25 1     1 0 101 my $session = shift;
26            
27 1         9 my $data = thaw(unpack("u", $session->{serialized}));
28 1 50       36 die "Session could not be unserialized" unless defined $data;
29             #Storable can return undef or die for different errors
30 1         3 $session->{data} = $data;
31             }
32              
33             1;
34              
35             =pod
36              
37             =head1 NAME
38              
39             Apache::Session::Serialize::UUEncode - Use Storable and C<pack()>
40             to zip up persistent data
41              
42             =head1 SYNOPSIS
43              
44             use Apache::Session::Serialize::UUEncode;
45              
46             $zipped = Apache::Session::Serialize::UUEncode::serialize($ref);
47             $ref = Apache::Session::Serialize::UUEncode::unserialize($zipped);
48              
49             =head1 DESCRIPTION
50              
51             This module fulfills the serialization interface of Apache::Session. It
52             serializes the data in the session object by use of Storable's C<nfreeze()> and
53             C<thaw()> functions, and Perl's C<pack()> and C<unpack()>. The serialized data
54             is ASCII text, suitable for storage in backing stores that don't handle binary
55             data gracefully, such as Postgres.
56              
57             =head1 AUTHOR
58              
59             This module was written by Jeffrey William Baker <jwbaker@acm.org>.
60              
61             =head1 SEE ALSO
62              
63             L<Apache::Session::Serialize::Storable>, L<Apache::Session::Serialize::Base64>,
64             L<Apache::Session>