
=head1 NAME

Mail::Box::Locker::Multi - lock a folder in all ways which work

=head1 CLASS INHERITANCE

 Mail::Box::Locker::Multi
   is a Mail::Box::Locker
   is a Mail::Reporter

=head1 SYNOPSIS

 See Mail::Box::Locker

=head1 DESCRIPTION

The C<::Multi> locker locks a folder in each way it can.  This way, the
chance is highest that any other program will leave the folder alone
during our access to it.

NFS-lock and Flock are tried.  More may be added when the ways to
lock are extended.  DotLock overlaps with NFS-lock, but NFS-lock is
safer, so that version is preferred.

=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'
 use                  <all possible>

=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)

=item B<use> =E<gt> ARRAY

Array of locker types and locker objects to be used to lock one
folder.  The type names are converted into objects.

Some locking types are not available on some platforms, so they will
not be excluded from the default list (NFS POSIX Flock).

=back

=back

=head2 The Locker

=over 4

=item B<DESTROY> 

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

=item B<lockers> 

Returns a list with all locker objects used by this object.

=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> FOLDER

See Mail::Box::Locker::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.
