App-Locker
view release on metacpan or search on metacpan
lib/App/Locker.pm view on Meta::CPAN
package App::Locker;
use strict;
use Storable;
use Convert::Base64;
use IO::Handle;
=head1 NAME
App::Locker - lock/unlock you perl script
=head1 SYNOPSIS
use App::Locker;
my $locker=App::Locker->create;
my $pid=fork();
if (!$pid){
# child
sleep(1);
$locker->unlock;
sleep(1);
} else {
# parent
print "LOCK\n";
$locker->lock();
print "UNLOCK\n";
}
=head1 DESCRIPTION
This module provides create lock point in any place scipt and unlock it from another script place (main, fork, thread).
=cut
$Storable::Deparse = 1;
=head2 create
my $locker=App::Locker->create;
create main object thith lock api
=cut
sub create{
my ($class, %params)=@_;
my ($reader, $writer);
pipe($reader, $writer);
$writer->autoflush(1);
my $self={
reader=>$reader,
writer=>$writer
};
bless($self, $class);
return $self;
}
=head2 destroy
$locker->destroy
destroy main object
=cut
sub destroy{
my ($self)=@_;
my $reader=$self->{reader};
my $writer=$self->{writer};
close $reader;
close $writer;
delete $self->{reader};
delete $self->{writer};
}
sub dpack{
my ($data)=@_;
my $ret;
if ($data){
$ret=encode_base64(Storable::freeze($data));
$ret=~s/[\r\n]//gs;
}
return $ret;
}
sub dunpack{
my ($data)=@_;
( run in 2.926 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )