
=head1 NAME

Mail::Box::Locker::NFS - lock a folder with a separate file, NFS-safe

=head1 CLASS INHERITANCE

 Mail::Box::Locker::NFS
   is a Mail::Box::Locker
   is a Mail::Reporter

=head1 SYNOPSIS

 See Mail::Box::Locker

=head1 DESCRIPTION

Like the C<::DotLock> locker, but then in an NFS-safe fashion.  Over NFS,
the creation of a file is not atomic.  The C<::DotLock> locker depends
on an atomic C<open()> hence in not usable.  The C<::NFS> locker is more
complicated (so slower), but will work for NFS -and for local disks too.

=head1 METHODS

=head2 Initiation

=over 4

=item B<new> OPTIONS

(Class method)

 OPTION               DEFAULT
 expires              1 hour
 file                 undef
 folder               <obligatory>
 log                  'WARNINGS'
 method               'DOTLOCK'
 timeout              10 seconds
 trace                'WARNINGS'

=over 4

=item B<expires> =E<gt> SECONDS

See Mail::Box::Locker::new(expires)

=item B<file> =E<gt> FILENAME

See Mail::Box::Locker::new(file)

=item B<folder> =E<gt> FOLDER

See Mail::Box::Locker::new(folder)

=item B<log> =E<gt> LEVEL

See Mail::Reporter::new(log)

=item B<method> =E<gt> METHOD | CLASS

See Mail::Box::Locker::new(method)

=item B<timeout> =E<gt> SECONDS|'NOTIMEOUT'

See Mail::Box::Locker::new(timeout)

=item B<trace> =E<gt> LEVEL

See Mail::Reporter::new(trace)

=back

=back

=head2 The Locker

=over 4

=item B<DESTROY> 

See Mail::Box::Locker::DESTROY()

=item B<name> 

See Mail::Box::Locker::name()

=back

=head2 Locking

=over 4

=item B<filename> [FILENAME]

See Mail::Box::Locker::filename()

=item B<folder> 

See Mail::Box::Locker::folder()

=item B<hasLock> 

See Mail::Box::Locker::hasLock()

=item B<isLocked> 

See Mail::Box::Locker::isLocked()

=item B<lock> 

=item B<unlock> 

See Mail::Box::Locker::unlock()

=back

=head2 Logging and Tracing

=over 4

=item B<defaultTrace> [LEVEL, [LEVEL]

See Mail::Reporter::defaultTrace()

=item B<errors> 

See Mail::Reporter::errors()

=item B<log> [LEVEL [,STRINGS]]

See Mail::Reporter::log()

=item B<report> [LEVEL]

See Mail::Reporter::report()

=item B<reportAll> [LEVEL]

See Mail::Reporter::reportAll()

=item B<trace> [LEVEL]

See Mail::Reporter::trace()

=item B<warnings> 

See Mail::Reporter::warnings()

=back

=head2 Other Methods

=over 4

=item B<AUTOLOAD> 

See Mail::Reporter::AUTOLOAD()

=item B<inGlobalDestruction> 

See Mail::Reporter::inGlobalDestruction()

=item B<logPriority> LEVEL

See Mail::Reporter::logPriority()

=item B<logSettings> 

See Mail::Reporter::logSettings()

=item B<notImplemented> 

See Mail::Reporter::notImplemented()

=back

=head1 SEE ALSO

A good start to read is Mail::Box-Overview.
More documentation and a mailinglist are available from the project's
website at L<http://perl.overmeer.net/mailbox/>.

=head1 AUTHOR

Written by Mark Overmeer (L<mark@overmeer.net|mailto:mark@overmeer.net>)
with the help of many.  See the ChangeLog for details.

=head1 VERSION

This code is beta, version 2.037.

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