Version 0.32
[gitmo/MooseX-Storage.git] / lib / MooseX / Storage / Format / Storable.pm
CommitLineData
124c2ba5 1
2package MooseX::Storage::Format::Storable;
3use Moose::Role;
4
5use Storable ();
6
e44b5f54 7our $VERSION = '0.32';
124c2ba5 8our $AUTHORITY = 'cpan:STEVAN';
9
10requires 'pack';
11requires 'unpack';
12
13sub thaw {
14 my ( $class, $stored, @args ) = @_;
15 $class->unpack( Storable::thaw($stored), @args );
16}
17
18sub freeze {
19 my ( $self, @args ) = @_;
20 Storable::nfreeze( $self->pack(@args) );
21}
22
f82612bc 23no Moose::Role;
24
124c2ba5 251;
26
27__END__
28
29=pod
30
31=head1 NAME
32
4fa64e86 33MooseX::Storage::Format::Storable - A Storable serialization role
124c2ba5 34
35=head1 SYNOPSIS
36
37 package Point;
38 use Moose;
39 use MooseX::Storage;
ec725183 40
124c2ba5 41 with Storage('format' => 'Storable');
ec725183 42
124c2ba5 43 has 'x' => (is => 'rw', isa => 'Int');
44 has 'y' => (is => 'rw', isa => 'Int');
ec725183 45
124c2ba5 46 1;
ec725183 47
124c2ba5 48 my $p = Point->new(x => 10, y => 10);
ec725183 49
50 ## methods to freeze/thaw into
124c2ba5 51 ## a specified serialization format
ec725183 52
124c2ba5 53 # pack the class with Storable
ec725183 54 my $storable_data = $p->freeze();
55
124c2ba5 56 # unpack the storable data into the class
ec725183 57 my $p2 = Point->thaw($storable_data);
124c2ba5 58
59=head1 DESCRIPTION
60
ec725183 61This module will C<thaw> and C<freeze> Moose classes using Storable. It
62uses C<Storable::nfreeze> by default so that it can be easily used
63in IPC scenarios across machines or just locally.
124c2ba5 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