The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Net::Hotline::Protocol::Header;

## Copyright(c) 1998-2002 by John C. Siracusa.  All rights reserved.  This
## program is free software; you can redistribute it and/or modify it under
## the same terms as Perl itself.

use strict;

use vars qw($VERSION);

$VERSION = '0.80';

sub new
{
  my($class, $data) = @_;
  my($self);

  if(defined($data))
  {
    $self =
    {
      'TYPE' => substr($data, 0, 4),
      'SEQ'  => substr($data, 4, 4),
      'TASK' => substr($data, 8, 4),
      'LEN'  => substr($data, 12, 4),
      'LEN2' => substr($data, 16, 4)
    };
  }
  else
  {
    $self =
    {
      'TYPE' => 0x00000000,
      'SEQ'  => 0x00000000,
      'TASK' => 0x00000000,
      'LEN'  => 0x00000000,
      'LEN2' => 0x00000000
    };
  }

  bless  $self, $class;
  return $self;
}

sub type
{
  $_[0]->{'TYPE'} = $_[1]  if(defined($_[1]));
  return $_[0]->{'TYPE'};
}

sub seq
{
  $_[0]->{'SEQ'} = $_[1]  if(defined($_[1]));
  return $_[0]->{'SEQ'};
}

sub task
{
  $_[0]->{'TASK'} = $_[1]  if(defined($_[1]));
  return $_[0]->{'TASK'};
}

sub len
{
  $_[0]->{'LEN'} = $_[1]  if(defined($_[1]));
  return $_[0]->{'LEN'};
}

sub len2
{
  $_[0]->{'LEN2'} = $_[1]  if(defined($_[1]));
  return $_[0]->{'LEN2'};
}

sub header
{
  return pack("N5", $_[0]->{'TYPE'},
                    $_[0]->{'SEQ'},
                    $_[0]->{'TASK'},
                    $_[0]->{'LEN'},
                    $_[0]->{'LEN2'});
}

1;