Bump version numbers for release
[gitmo/MooseX-Storage.git] / lib / MooseX / Storage / Format / Storable.pm
1
2 package MooseX::Storage::Format::Storable;
3 use Moose::Role;
4
5 use Storable ();
6
7 our $VERSION   = '0.18';
8 our $AUTHORITY = 'cpan:STEVAN';
9
10 requires 'pack';
11 requires 'unpack';
12
13 sub thaw {
14     my ( $class, $stored, @args ) = @_;
15     $class->unpack( Storable::thaw($stored), @args );
16 }
17
18 sub freeze {
19     my ( $self, @args ) = @_;
20     Storable::nfreeze( $self->pack(@args) );
21 }
22
23 1;
24
25 __END__
26
27 =pod
28
29 =head1 NAME
30
31 MooseX::Storage::Format::Storable - A Storable serialization role
32
33 =head1 SYNOPSIS
34
35   package Point;
36   use Moose;
37   use MooseX::Storage;
38   
39   with Storage('format' => 'Storable');
40   
41   has 'x' => (is => 'rw', isa => 'Int');
42   has 'y' => (is => 'rw', isa => 'Int');
43   
44   1;
45   
46   my $p = Point->new(x => 10, y => 10);
47   
48   ## methods to freeze/thaw into 
49   ## a specified serialization format
50   
51   # pack the class with Storable
52   my $storable_data = $p->freeze(); 
53   
54   # unpack the storable data into the class
55   my $p2 = Point->thaw($storable_data);  
56
57 =head1 DESCRIPTION
58
59 This module will C<thaw> and C<freeze> Moose classes using Storable. It 
60 uses C<Storable::nfreeze> by default so that it can be easily used 
61 in IPC scenarios across machines or just locally. 
62
63 One important thing to note is that this module does not mix well 
64 with the IO modules. The structures that C<freeze> and C<thaw> deal with 
65 are Storable's memory representation, and (as far as I know) that 
66 is not easily just written onto a file. If you want file based 
67 serialization with Storable, the please look at the 
68 L<MooseX::Storage::IO::StorableFile> role instead.
69
70 =head1 METHODS
71
72 =over 4
73
74 =item B<freeze>
75
76 =item B<thaw ($stored)>
77
78 =back
79
80 =head2 Introspection
81
82 =over 4
83
84 =item B<meta>
85
86 =back
87
88 =head1 BUGS
89
90 All complex software has bugs lurking in it, and this module is no 
91 exception. If you find a bug please either email me, or add the bug
92 to cpan-RT.
93
94 =head1 AUTHOR
95
96 Stevan Little E<lt>stevan.little@iinteractive.comE<gt>
97
98 =head1 COPYRIGHT AND LICENSE
99
100 Copyright 2007-2008 by Infinity Interactive, Inc.
101
102 L<http://www.iinteractive.com>
103
104 This library is free software; you can redistribute it and/or modify
105 it under the same terms as Perl itself.
106
107 =cut
108
109