Apache::Quota::DB_File::Lock - Uses DB_File::Lock to lock the quota db file


Apache-Quota documentation Contained in the Apache-Quota distribution.

Index


Code Index:

NAME

Top

Apache::Quota::DB_File::Lock - Uses DB_File::Lock to lock the quota db file

SYNOPSIS

Top

  PerlSetVar  QuotaLocker  DB_File::Lock

DESCRIPTION

Top

This module implements locking for the quota db file using DB_File::Lock.

SUPPORT

Top

Please submit bugs to the CPAN RT system at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Apache%3A%3AQuota or via email at bug-apache-quota@rt.cpan.org.

AUTHOR

Top

Dave Rolsky <autarch@urth.org>

COPYRIGHT

Top


Apache-Quota documentation Contained in the Apache-Quota distribution.

package Apache::Quota::DB_File::Lock;

use strict;

use DB_File::Lock;
use Fcntl qw(O_CREAT O_RDWR O_RDONLY);

sub _open_db
{
    my $class = shift;
    my %p = @_;

    my $rdwr;
    if ( $p{mode} eq 'read' )
    {
        $rdwr = O_CREAT|O_RDONLY;
    }
    else
    {
        $rdwr = O_CREAT|O_RDWR;
    }

    my $locking = { mode        => $p{mode},
                    nonblocking => 1,
                  };

    my %db;
    for ( 1..3 )
    {
        last if tie %db, 'DB_File::Lock', $p{file}, $rdwr, 0644, $DB_HASH, $locking;

        sleep 1;
    }

    die "Cannot tie to $p{file} with DB_File::Lock: $!" unless tied %db;

    return \%db;
}


1;

__END__