| KiokuDB documentation | Contained in the KiokuDB distribution. |
KiokuDB::Backend::Serialize - Serialization role for backends
package KiokuDB::Backend::Serialize::Foo;
use Moose::Role;
use Foo;
use namespace::clean -except => 'meta';
with qw(KiokuDB::Backend::Serialize);
sub serialize {
my ( $self, $entry ) = @_;
Foo::serialize($entry)
}
sub deserialize {
my ( $self, $blob ) = @_;
Foo::deserialize($blob);
}
This role provides provides a consistent way to use serialization modules to handle backend serialization.
See KiokuDB::Backend::Serialize::Storable, KiokuDB::Backend::Serialize::YAML and KiokuDB::Backend::Serialize::JSON for examples.
Takes a KiokuDB::Entry as an argument. Should return a value suitable for storage by the backend.
Takes whatever serializate returned and should inflate and return a
KiokuDB::Entry.
| KiokuDB documentation | Contained in the KiokuDB distribution. |
#!/usr/bin/perl package KiokuDB::Backend::Serialize; use Moose::Role; use Moose::Util::TypeConstraints; use namespace::clean -except => 'meta'; requires qw(serialize deserialize); my %types = ( storable => "KiokuDB::Serializer::Storable", json => "KiokuDB::Serializer::JSON", yaml => "KiokuDB::Serializer::YAML", memory => "KiokuDB::Serializer::Memory", ); coerce( __PACKAGE__, from Str => via { my $class = $types{lc($_)}; Class::MOP::load_class($class); $class->new; }, from HashRef => via { my %args = %$_; my $class = $types{lc(delete $args{format})}; Class::MOP::load_class($class); $class->new(%args); }, ); __PACKAGE__ __END__