
=head1 NAME

Mail::Box::Locker::Flock - lock a folder using kernel file-locking


=head1 INHERITANCE

 Mail::Box::Locker::Flock
   is a Mail::Box::Locker
   is a Mail::Reporter


=head1 SYNOPSIS

 See Mail::Box::Locker


=head1 DESCRIPTION

The C<::Flock> object lock the folder by creating an exclusive lock on
the file using the kernel's C<flock> facilities.  This lock is created
on a separate file-handle to the folder file, so not the handle which
is reading.

File locking does not work in some situations, for instance for
operating systems do not support C<flock>.



=head1 METHODS


=head2 Constructors


Mail::Box::Locker::Flock-E<gt>B<new>(OPTIONS)

=over 4

 Option   Defined in       Default      
 expires  L<Mail::Box::Locker>  1 hour       
 file     L<Mail::Box::Locker>  undef        
 folder   L<Mail::Box::Locker>  <required>   
 log      L<Mail::Reporter>  C<'WARNINGS'>
 method   L<Mail::Box::Locker>  C<'FLOCK'>   
 timeout  L<Mail::Box::Locker>  10 seconds   
 trace    L<Mail::Reporter>  C<'WARNINGS'>

. expires SECONDS

. file FILENAME

. folder FOLDER

. log LEVEL

. method STRING|CLASS|ARRAY

. timeout SECONDS|'NOTIMEOUT'

. trace LEVEL

=back

=head2 The Locker


$obj-E<gt>B<filename>([FILENAME])

=over 4

See L<Mail::Box::Locker/"The Locker">

=back

$obj-E<gt>B<folder>

=over 4

See L<Mail::Box::Locker/"The Locker">

=back

$obj-E<gt>B<name>

=over 4

See L<Mail::Box::Locker/"The Locker">

=back

=head2 Locking


$obj-E<gt>B<hasLock>

=over 4

See L<Mail::Box::Locker/"Locking">

=back

$obj-E<gt>B<isLocked>

=over 4

=back

$obj-E<gt>B<lock>

=over 4

=back

$obj-E<gt>B<unlock>

=over 4

See L<Mail::Box::Locker/"Locking">

=back

=head2 Error handling


$obj-E<gt>B<AUTOLOAD>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<addReport>(OBJECT)

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<defaultTrace>([LEVEL, [LEVEL])

Mail::Box::Locker::Flock-E<gt>B<defaultTrace>([LEVEL, [LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<errors>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<log>([LEVEL [,STRINGS]])

Mail::Box::Locker::Flock-E<gt>B<log>([LEVEL [,STRINGS]])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<logPriority>(LEVEL)

Mail::Box::Locker::Flock-E<gt>B<logPriority>(LEVEL)

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<logSettings>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<notImplemented>

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<report>([LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<reportAll>([LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<trace>([LEVEL])

=over 4

See L<Mail::Reporter/"Error handling">

=back

$obj-E<gt>B<warnings>

=over 4

See L<Mail::Reporter/"Error handling">

=back

=head2 Cleanup


$obj-E<gt>B<DESTROY>

=over 4

See L<Mail::Box::Locker/"Cleanup">

=back

$obj-E<gt>B<inGlobalDestruction>

=over 4

See L<Mail::Reporter/"Cleanup">

=back



=head1 DIAGNOSTICS

I<Error:> Package $package does not implement $method.

Fatal error: the specific package (or one of its superclasses) does not
implement this method where it should. This message means that some other
related classes do implement this method however the class at hand does
not.  Probably you should investigate this and probably inform the author
of the package.

I<Error:> Unable to check lock file $filename for $folder: $!

To check whether the filename is used to flock a folder, the file must be
opened.  Apparently this fails, which does not mean that the folder is
locked neither that it is unlocked.

I<Error:> Unable to open flock file $filename for $folder: $!

For flock-ing a folder it must be opened, which does not succeed for the
specified reason.

I<Error:> Will never get a flock at $filename for $folder: $!

Tried to flock the folder, but it did not succeed.  The error code received
from the OS indicates that it will not succeed ever, so we do not need to
try again.






=head1 REFERENCES

See the MailBox website at L<http://perl.overmeer.net/mailbox/> for more details.

=head1 COPYRIGHTS

Distribution version 2.055.
Written by Mark Overmeer (mark@overmeer.net).  See the ChangeLog for
other contributors.

Copyright (c) 2001-2003 by the author(s). All rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.


