The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package perfSONAR_PS::Status::Link;

use strict;
use warnings;

our $VERSION = 0.09;

use fields 'ID', 'KNOWLEDGE', 'START_TIME', 'END_TIME', 'OPER_STATUS', 'ADMIN_STATUS';

sub new {
    my ($package, $link_id, $knowledge, $start_time, $end_time, $oper_status, $admin_status) = @_;

    my $self = fields::new($package);

    if (defined $link_id and $link_id ne "") {
        $self->{ID} = $link_id;
    }

    if (defined $knowledge and $knowledge ne "") {
        $self->{KNOWLEDGE} = $knowledge;
    }
    if (defined $start_time and $start_time ne "") {
        $self->{START_TIME} = $start_time;
    }
    if (defined $end_time and $end_time ne "") {
        $self->{END_TIME} = $end_time;
    }
    if (defined $oper_status and $oper_status ne "") {
        $self->{OPER_STATUS} = $oper_status;
    }
    if (defined $admin_status and $admin_status ne "") {
        $self->{ADMIN_STATUS} = $admin_status;
    }

    return $self;
}

sub setID {
    my ($self, $id) = @_;

    $self->{ID} = $id;

    return;
}

sub setKnowledge {
    my ($self, $knowledge) = @_;

    $self->{KNOWLEDGE} = $knowledge;

    return;
}

sub setStartTime {
    my ($self, $starttime) = @_;

    $self->{START_TIME} = $starttime;

    return;
}

sub setEndTime {
    my ($self, $endtime) = @_;

    $self->{END_TIME} = $endtime;

    return;
}

sub setOperStatus {
    my ($self, $oper_status) = @_;

    $self->{OPER_STATUS} = $oper_status;

    return;
}

sub setAdminStatus {
    my ($self, $admin_status) = @_;

    $self->{ADMIN_STATUS} = $admin_status;

    return;
}

sub getID {
    my ($self) = @_;

    return $self->{ID};
}

sub getKnowledge {
    my ($self) = @_;

    return $self->{KNOWLEDGE};
}

sub getStartTime {
    my ($self) = @_;

    return $self->{START_TIME};
}

sub getEndTime {
    my ($self) = @_;

    return $self->{END_TIME};
}

sub getOperStatus {
    my ($self) = @_;

    return $self->{OPER_STATUS};
}

sub getAdminStatus {
    my ($self) = @_;

    return $self->{ADMIN_STATUS};
}

1;

__END__
=head1 NAME

perfSONAR_PS::Status::Link - A module that provides an object with an interface
for link status information.

=head1 DESCRIPTION

This module is to be treated as an object representing the status of a link for
a certain range of time.

=head1 SYNOPSIS

=head1 DETAILS

=head1 API

=head2 new ($package, $link_id, $knowledge, $start_time, $end_time, $oper_status, $admin_status)

Creates a new instance of a link object with the specified values (None of
which is required, they can all be set later).

=head2 setID ($self, $id)

Sets the identifier for this link.

=head2 setKnowledge ($self, $knowledge)

Sets the knowledge level for the information about this link.

=head2 setStartTime ($self, $starttime)

Sets the start time of the range over which this link had the specified status

=head2 setEndTime ($self, $endtime)

Sets the end time of the range over which this link had the specified status

=head2 setOperStatus ($self, $oper_status)

Sets the operational status of this link over the range of time specified

=head2 setAdminStatus ($self, $admin_status)

Sets the administrative status of this link over the range of time specified

=head2 getID ($self)

Gets the identifier for this link

=head2 getKnowledge ($self)

Gets the knowledge level for the information about this link.

=head2 getStartTime ($self)

Gets the start time of the range over which this link had the specified status

=head2 getEndTime ($self)

Gets the end time of the range over which this link had the specified status

=head2 getOperStatus ($self)

Gets the operational status of this link

=head2 getAdminStatus ($self)

Gets the administrative status of this link

=head1 LICENSE
 
You should have received a copy of the Internet2 Intellectual Property Framework along
with this software.  If not, see <http://www.internet2.edu/membership/ip.html>

=head1 COPYRIGHT
 
Copyright (c) 2004-2008, Internet2 and the University of Delaware

All rights reserved.

=cut
# vim: expandtab shiftwidth=4 tabstop=4