File Coverage

blib/lib/ResourcePool/LoadBalancer/FailBack.pm
Criterion Covered Total %
statement 24 25 96.0
branch 8 10 80.0
condition 5 6 83.3
subroutine 4 4 100.0
pod 0 2 0.0
total 41 47 87.2


line stmt bran cond sub pod time code
1             #*********************************************************************
2             #*** ResourcePool::LoadBalancer::FailBack
3             #*** Copyright (c) 2002,2003 by Markus Winand
4             #*** $Id: FailBack.pm,v 1.4 2013-04-16 10:14:44 mws Exp $
5             #*********************************************************************
6              
7             package ResourcePool::LoadBalancer::FailBack;
8              
9 1     1   7 use vars qw($VERSION @ISA);
  1         2  
  1         56  
10 1     1   6 use ResourcePool::LoadBalancer;
  1         2  
  1         331  
11              
12             $VERSION = "1.0107";
13             push @ISA, "ResourcePool::LoadBalancer";
14              
15             sub get_once($) {
16 86     86 0 113 my ($self) = @_;
17 86         97 my ($rec, $r_pool);
18 86         102 my $i = 0;
19              
20 86   66     223 do { # get first not suspended pool
21 128         618 $r_pool = $self->{PoolArray}->[$i++];
22             } while (defined $r_pool && $self->chk_suspend($r_pool)) ;
23              
24 86 50       181 if (defined $r_pool) { #
25 86         305 $rec = $r_pool->{pool}->get();
26 86 100       180 if (! defined $rec) {
27 2         20 $self->suspend($r_pool);
28             }
29              
30 86 100 100     725 if (defined $self->{LastUsedPool} && $r_pool != $self->{LastUsedPool}) {
31 4         19 $self->{LastUsedPool}->{pool}->downsize();
32             }
33 86         170 $self->{LastUsedPool} = $r_pool;
34             }
35 86 100       230 if (! defined $rec) {
36 2         4 undef $r_pool;
37             }
38 86         750 return ($rec, $r_pool);
39             }
40              
41             sub free_policy($$) {
42 82     82 0 107 my ($self, $r_pool) = @_;
43              
44 82 50       269 if ($r_pool != $self->{LastUsedPool}) {
45 0         0 $self->{LastUsedPool}->{pool}->downsize();
46             }
47 82         196 return 1;
48             }
49              
50              
51             1;