X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FReplicated%2FBalancer%2FRandom.pm;h=1e657b5a77e2108b9e85b03d0e5ea675ab9ba670;hb=41916570b3a93b05746e23b73c9a9b5005bc0d2e;hp=66f08279195d9a1ae62aeb426954f59b608017ad;hpb=cb6ec758e3c4607ec8e30dd943a500a1d70d8940;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/Random.pm b/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/Random.pm index 66f0827..1e657b5 100644 --- a/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/Random.pm +++ b/lib/DBIx/Class/Storage/DBI/Replicated/Balancer/Random.pm @@ -1,12 +1,12 @@ package DBIx::Class::Storage::DBI::Replicated::Balancer::Random; -use List::Util qw(shuffle); use Moose; -extends 'DBIx::Class::Storage::DBI::Replicated::Balancer'; +with 'DBIx::Class::Storage::DBI::Replicated::Balancer'; +use namespace::clean -except => 'meta'; =head1 NAME -DBIx::Class::Storage::DBI::Replicated::Balancer; A Software Load Balancer +DBIx::Class::Storage::DBI::Replicated::Balancer::Random - A 'random' Balancer =head1 SYNOPSIS @@ -40,12 +40,14 @@ be requested several times in a row. =cut sub next_storage { - my $self = shift @_; - return (shuffle($self->pool->active_replicants))[0] - if $self->pool->active_replicants; + my $self = shift @_; + my @active_replicants = $self->pool->active_replicants; + my $count_active_replicants = $#active_replicants +1; + my $random_replicant = int(rand($count_active_replicants)); + + return $active_replicants[$random_replicant]; } - =head1 AUTHOR John Napiorkowski @@ -56,4 +58,6 @@ You may distribute this code under the same terms as Perl itself. =cut -1; \ No newline at end of file +__PACKAGE__->meta->make_immutable; + +1;