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 )