Name

IPC::SRLock::Base - Common lock object attributes and methods

Synopsis

package IPC::SRLock::<some_new_mechanism>;

use Moo;

extents 'IPC::SRLock::Base';

Description

This is the base class for the factory subclasses of IPC::SRLock. The factory subclasses all inherit from this class

Configuration and Environment

Defines the following attributes;

debug

Turns on debug output. Defaults to 0

exception_class

Class used to throw exceptions

log

If set to a log object, it's debug method is called if debugging is turned on. Defaults to Class::Null

name

Used as the lock file names. Defaults to ipc_srlock

nap_time

How long to wait between polls of the lock table. Defaults to 0.5 seconds

patience

Time in seconds to wait for a lock before giving up. If set to 0 waits forever. Defaults to 0

pid

The process id doing the locking. Defaults to this processes id

time_out

Time in seconds before a lock is deemed to have expired. Defaults to 300

Subroutines/Methods

BUILDARGS

Extract "debug" and "log" attribute values from the builder object if one was supplied

get_table

my $data = $lock_obj->get_table;

Returns a hash ref that contains the current lock table contents. The keys/values in the hash are suitable for passing to HTML::FormWidgets

list

my $array_ref = $lock_obj->list;

Returns an array of hash refs that represent the current lock table

reset

$lock_obj->reset( k => 'some_resource_key', ... );

Resets the lock referenced by the k attribute.

set

$lock_obj->set( k => 'some_resource_key', ... );

Sets the specified lock. Attributes are;

k

Unique key to identify the lock. Mandatory no default

p

Explicitly set the process id associated with the lock. Defaults to the current process id

t

Set the time to live for this lock. Defaults to five minutes. Setting it to zero makes the lock last indefinitely

_get_args

Default arguments for the set method

_sleep_or_timeout

Sleep for a bit or throw a timeout exception

_timeout_error

Return the text of the the timeout message

Diagnostics

None

Dependencies

Class::Null
Class::Usul
Date::Format
File::DataClass
Moo
Time::Elapsed

Incompatibilities

There are no known incompatibilities in this module

Bugs and Limitations

There are no known bugs in this module. Please report problems to the address below. Patches are welcome

Acknowledgements

Larry Wall - For the Perl programming language

Author

Peter Flanigan, <pjfl@cpan.org>

License and Copyright

Copyright (c) 2017 Peter Flanigan. All rights reserved

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic

This program is distributed in the hope that it will be useful, but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE