# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. package Lucy::Store::Lock; use Lucy; our $VERSION = '0.003002'; $VERSION = eval $VERSION; 1; __END__ __BINDING__ my $synopsis = <<'END_SYNOPSIS'; my $lock = $lock_factory->make_lock( name => 'write', timeout => 5000, ); $lock->obtain or die "can't get lock for " . $lock->get_name; do_stuff(); $lock->release; END_SYNOPSIS my $constructor = <<'END_CONSTRUCTOR'; my $lock = Lucy::Store::Lock->new( name => 'commit', # required folder => $folder, # required host => $hostname, # required timeout => 5000, # default: 0 interval => 1000, # default: 100 ); END_CONSTRUCTOR Clownfish::CFC::Binding::Perl::Class->register( parcel => "Lucy", class_name => "Lucy::Store::Lock", bind_methods => [ qw( Obtain Request Is_Locked Release Clear_Stale Get_Name Get_Lock_Path Get_Host ) ], bind_constructors => ["new"], make_pod => { synopsis => $synopsis, constructor => { sample => $constructor }, methods => [ qw( obtain request release is_locked clear_stale ) ], }, ); Clownfish::CFC::Binding::Perl::Class->register( parcel => "Lucy", class_name => "Lucy::Store::LockFileLock", bind_constructors => ["new"], ); Clownfish::CFC::Binding::Perl::Class->register( parcel => "Lucy", class_name => "Lucy::Store::SharedLock", bind_constructors => ["new"], );