App-Repository
view release on metacpan or search on metacpan
lib/App/Repository.pm view on Meta::CPAN
#############################################################################
=head1 Methods: Locking (Concurrency Management)
=cut
# this is a write lock for the table
sub _lock_table {
&App::sub_entry if ($App::trace);
my ($self, $table) = @_;
if (! $self->{locked}) { # I have locked it myself, so I don't need to again
my ($name, $dbname, $context, $rlock);
$name = $self->{name};
$dbname = $self->{dbname};
$context = $self->{context};
$rlock = $context->resource_locker($name); # get the one that corresponds to this repository
$rlock->lock("db.$dbname.$table");
$self->{locked} = 1;
}
&App::sub_exit() if ($App::trace);
}
# unlocks the write lock for the table
sub _unlock_table {
&App::sub_entry if ($App::trace);
my ($self, $table) = @_;
if ($self->{locked}) {
my ($name, $dbname, $context, $rlock);
$name = $self->{name};
$dbname = $self->{dbname};
$context = $self->{context};
$rlock = $context->resource_locker($name); # get the one that corresponds to this repository
$rlock->unlock("db.$dbname.$table");
delete $self->{locked};
}
&App::sub_exit() if ($App::trace);
}
#############################################################################
# METHODS
#############################################################################
=head1 Methods: Miscellaneous
( run in 0.692 second using v1.01-cache-2.11-cpan-49f99fa48dc )