package Net::DAV::LockManager::Simple; use Net::DAV::Lock; use strict; our $VERSION = '1.304'; $VERSION = eval $VERSION; # # This reference implementation of the lock management database interface # provides an example of the simplest case of a pluggable lock management # backend mechanism which can be swapped in for any other sort of # implementation without concern for the operation of the lock manager # itself. # # # Create a new lock manager context. Optionally accepts an array # containing a default set of locks. # sub new { my $class = shift; return bless \@_, $class; } # # Stub method. Simply present to adhere to the lock management interface # used within this package. # sub close { return; } # # Given a normalized string representation of a resource path, return # the first lock found. Otherwise, return undef if none is located. # sub get { my ($self, $path) = @_; foreach my $lock (@$self) { if ($lock->path eq $path) { return $lock; } } return undef; } # # Given a path string, return all objects indexed whose path is a descendant # of the one specified. # sub list_descendants { my ($self, $path) = @_; return grep { $_->path ne '/' } @$self if $path eq '/'; return grep { index($_->path, "$path/") == 0 } @$self; } # # Given a Net::DAV::Lock object, replace any other locks whose # path corresponds to that which is stored in the list. # sub update { my ($self, $lock) = @_; for (my $i=0; $$self[$i]; $i++) { if ($$self[$i]->path eq $lock->path) { $$self[$i] = $lock; } } return $lock; } # # Add the given lock object to the list. # sub add { my ($self, $lock) = @_; push @$self, $lock; return $lock; } # # Given a lock, the database record which contains the corresponding # path will be removed. # sub remove { my ($self, $lock) = @_; @{$self} = grep { $_->path ne $lock->path } @{$self}; } 1; __END__ Copyright (c) 2010, cPanel, Inc. All rights reserved. This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See L.