Hopkins
view release on metacpan or search on metacpan
lib/Hopkins/Store.pm view on Meta::CPAN
package Hopkins::Store;
use strict;
use warnings;
=head1 NAME
Hopkins::Store - interface to backend storage
=head1 DESCRIPTION
Hopkins::Store encapsulates all of the busywork associated
with the DBIx::Class schema creation.
=cut
use POE;
use POE::Filter::Reference;
use POE::Wheel::Run;
use Class::Accessor::Fast;
use Cache::FileCache;
use Data::UUID;
use Tie::IxHash;
use Hopkins::Store::Backend;
use base 'Class::Accessor::Fast';
__PACKAGE__->mk_accessors(qw(config cache events backend tries subscribers));
use constant HOPKINS_STORE_EVENT_PROC_INTERVAL => 10;
my $ug = new Data::UUID;
=head1 METHODS
=over 4
=item init
=cut
sub new
{
my $self = shift->SUPER::new(@_);
return undef if not $self->config->loaded;
$self->events(new Tie::IxHash);
$self->subscribers({});
$self->cache(new Cache::FileCache {
cache_root => $self->config->fetch('state/root')->stringify,
namespace => 'store',
directory_umask => 0077
});
if (my $events = $self->cache->get('events')) {
last if not ref $events eq 'ARRAY';
foreach my $href (@$events) {
next if not ref $href eq 'HASH';
next if not defined $href->{id};
next if not defined $href->{contents};
$self->events->Push($href->{id} => $href->{contents});
}
}
POE::Session->create
(
( run in 1.762 second using v1.01-cache-2.11-cpan-5837b0d9d2c )