X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FPool.pm;fp=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FPool.pm;h=6d5583527787f5e38355cdd7ffe80e9947c64f9b;hb=1e1cc55ea27a0f41b4f300b41de94e4d2f45d12d;hp=9980b4d212c947b3f9e1a1412a49b2a14dc66995;hpb=1f9ae1a378e692a83c39da3a1c2cab60bb4a5591;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm index 9980b4d..6d55835 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Pool.pm @@ -1,11 +1,11 @@ package DBIx::Class::Storage::DBI::Replicated::Pool; -use Moose; +use Moo; use DBIx::Class::Storage::DBI::Replicated::Replicant; use List::Util 'sum'; use Scalar::Util 'reftype'; use DBI (); -use MooseX::Types::Moose qw/Num Int ClassName HashRef/; +use Types::Standard qw/Num Int ClassName HashRef Object/; use DBIx::Class::Storage::DBI::Replicated::Types 'DBICStorageDBI'; use Try::Tiny; @@ -44,7 +44,6 @@ return a number of seconds that the replicating database is lagging. has 'maximum_lag' => ( is=>'rw', isa=>Num, - required=>1, lazy=>1, default=>0, ); @@ -125,34 +124,28 @@ Removes the replicant under $key from the pool has 'replicants' => ( is=>'rw', - traits => ['Hash'], - isa=>HashRef['Object'], + isa=>HashRef[Object], default=>sub {{}}, - handles => { - 'set_replicant' => 'set', - 'get_replicant' => 'get', - 'has_replicants' => 'is_empty', - 'num_replicants' => 'count', - 'delete_replicant' => 'delete', - 'all_replicant_storages' => 'values', - }, ); -around has_replicants => sub { - my ($orig, $self) = @_; - return !$self->$orig; -}; +sub set_replicant { $_[0]->replicants->{$_[1]} = $_[2] } +sub get_replicant { $_[0]->replicants->{$_[1]} } +sub has_replicants { !!keys %{$_[0]->replicants} } +sub num_replicants { 0+keys %{$_[0]->replicants} } +sub delete_replicant { delete $_[0]->replicants->{$_[1]} } +sub all_replicant_storages { values %{$_[0]->replicants} } has next_unknown_replicant_id => ( is => 'rw', - traits => ['Counter'], isa => Int, default => 1, - handles => { - 'inc_unknown_replicant_id' => 'inc', - }, ); +sub inc_unknown_replicant_id { + my ($self) = @_; + $self->next_unknown_replicant_id($self->next_unknown_replicant_id + 1); +} + =head2 master Reference to the master Storage. @@ -252,9 +245,10 @@ sub connect_replicant { $replicant->_determine_driver }); - Moose::Meta::Class->initialize(ref $replicant); - - DBIx::Class::Storage::DBI::Replicated::Replicant->meta->apply($replicant); + Moo::Role->apply_roles_to_object( + $replicant, + 'DBIx::Class::Storage::DBI::Replicated::Replicant', + ); # link back to master $replicant->master($self->master); @@ -423,6 +417,4 @@ L. =cut -__PACKAGE__->meta->make_immutable; - 1;