;# $Id
;#
;# @COPYRIGHT@
;#
;# $Log: Lock.pm,v $
;# Revision 0.3 2007/09/28 19:20:14 jv
;# Track where lock was issued in the code.
;#
;# Revision 0.2.1.1 2000/01/04 21:16:28 ram
;# patch1: track where lock was issued in the code
;#
;# Revision 0.2 1999/12/07 20:51:04 ram
;# Baseline for 0.2 release.
;#
use strict;
########################################################################
package LockFile::Lock;
#
# A lock instance -- deferred class.
#
#
# ->_lock_init
#
# Common lock initialization
#
# Attributes:
#
# scheme the LockFile::* object that created the lock
# filename where lock was taken
# line line in filename where lock was taken
#
sub _lock_init {
my $self = shift;
my ($scheme, $filename, $line) = @_;
$self->{'scheme'} = $scheme;
$self->{'filename'} = $filename;
$self->{'line'} = $line;
}
#
# Common attribute access
#
sub scheme { $_[0]->{'scheme'} }
sub filename { $_[0]->{'filename'} }
sub line { $_[0]->{'line'} }
#
# ->release
#
# Release the lock
#
sub release {
my $self = shift;
return $self->scheme->release($self);
}
#
# ->where
#
# Returns '"filename", line #' where lock was taken.
#
sub where {
my $self = shift;
return sprintf '"%s", line %d', $self->filename, $self->line;
}
1;