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