Net::UCP::TransactionManager - Perl extension to manage UCP session transaction numbers


Net-UCP-TransactionManager documentation Contained in the Net-UCP-TransactionManager distribution.

Index


Code Index:

NAME

Top

Net::UCP::TransactionManager - Perl extension to manage UCP session transaction numbers

SYNOPSIS

Top

  use Net::UCP::TransactionManager;

DESCRIPTION

Top

    This module is used by Net::UCP - see Net::UCP Module 

EXPORT

None

SEE ALSO

Top

  Net::UCP

AUTHOR

Top

Marco Romano, <nemux@cpan.org>

COPYRIGHT AND LICENSE

Top


Net-UCP-TransactionManager documentation Contained in the Net-UCP-TransactionManager distribution.

package Net::UCP::TransactionManager;

use 5.008007;
use strict;
use warnings;

require Exporter;

our @ISA = qw(Exporter);
our @EXPORT = qw();

our $VERSION = '0.02';

use constant HIGHEST_NBR => 99;

sub new { bless({}, shift())->_init(@_); }

sub get_trn {
    my ($self, $resp) = @_;
    
    return unless defined $resp;
    return $1 if ($resp =~ m/^(\d{2}).*/);
}

sub next_trn {
    my $self = shift;
    
    $self->{TRN}++;
    ($self->{TRN} > HIGHEST_NBR) && do{ $self->{TRN} = 0 };
    return $self->{TRN};
}

sub current_trn {
    my $self = shift;

    $self->reset_trn() if !defined $self->{TRN};
    return $self->{TRN};
}

sub set_trn {
    my $self    = shift;
    my $tmp_trn = shift;

    if ($tmp_trn =~ m/\A\d+\Z/) {
	$self->{TRN} = $tmp_trn;
	$self->{TRN} = 0 if ($self->{TRN} > HIGHEST_NBR);
    }

    return $self->current_trn();
}

sub reset_trn {
    my $self = shift;
    $self->{TRN} = 0;
}

sub padding {
    my $self = shift;
    return sprintf("%02d", $self->{TRN});
}

sub _init {
    my $self = shift;
    
    $self->reset_trn();
    $self;
}

1;
__END__