package NetHirc::Inventory;
use strict;
use warnings;
sub current_server
{
my $self = shift;
my $first = $self->[0];
return $first if $first->connected();
return undef;
}
sub connected
{
my $self = shift;
my $server = shift;
my $srv = $self->has_server($server);
return undef unless $srv;
return $srv->{'_connected'};
}
sub has_server
{
my $self = shift;
my $server = shift;
grep {
($_->{'_aka'} and ($_->{'_aka'} eq $server)) or
($_->{'Server'} eq $server)
} @$self;
}
sub set_server
{
my $self = shift;
my $server = shift;
for (my $i = 0; $i < @$self; $i++)
{
if ($self->[$i]->{'Server'} eq $server)
{
unshift @$self, splice(@$self, $i, 1);
}
}
}
sub reorient
{
my $self = shift;
my ($next) = grep { $_->{'_connected'} } @$self;
$self->set_server($next->name()) if $next;
return $next;
}
1;
__END__
syntax highlighted by Code2HTML, v. 0.9.1