X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCluster.pm;h=51c63f8239ed7af492148b68cf5f67007a5254af;hb=099c6b4a10d9f1e7471b0c94273cd992b5814cdc;hp=98ceafa9c0d55170c1b220b9fcceda9b87842965;hpb=57b5e464bc44ae8eee23ab94c1f499f527595dc9;p=spider.git diff --git a/perl/DXCluster.pm b/perl/DXCluster.pm index 98ceafa9..51c63f82 100644 --- a/perl/DXCluster.pm +++ b/perl/DXCluster.pm @@ -92,6 +92,16 @@ sub showcall return $self->{call}; } +# the answer required by show/cluster +sub cluster +{ + my $users = DXCommandmode::get_all(); + my $uptime = main::uptime(); + my $tot = $DXNode::users + 1; + + return " $DXNode::nodes nodes, $users local / $tot total users Max users $DXNode::maxusers Uptime $uptime"; +} + sub DESTROY { my $self = shift; @@ -122,9 +132,6 @@ package DXNodeuser; use DXDebug; use strict; -use vars qw($users); - -$users = 0; sub new { @@ -135,7 +142,6 @@ sub new my $self = $pkg->alloc($dxchan, $call, $confmode, $here); $self->{mynode} = $node; $node->{list}->{$call} = $self; # add this user to the list on this node - $users++; dbg('cluster', "allocating user $call to $node->{call} in cluster\n"); $node->update_users; return $self; @@ -151,12 +157,11 @@ sub del delete $DXCluster::cluster{$call}; # remove me from the cluster table dbg('cluster', "deleting user $call from $node->{call} in cluster\n"); $node->update_users; - $users-- if $users > 0; } sub count { - return $users; # + 1 for ME (naf eh!) + return $DXNode::users; # + 1 for ME (naf eh!) } no strict; @@ -172,9 +177,12 @@ package DXNode; use DXDebug; use strict; -use vars qw($nodes); +use vars qw($nodes $users $maxusers); $nodes = 0; +$users = 0; +$maxusers = 0; + sub new { @@ -217,11 +225,14 @@ sub update_users { my $self = shift; my $count = shift; + $users -= $self->{users}; if ((keys %{$self->{list}})) { $self->{users} = (keys %{$self->{list}}); } else { $self->{users} = $count; } + $users += $self->{users}; + $maxusers = $users+$nodes if $users+$nodes > $maxusers; } sub count