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