prolock

1.3.0 • Public • Published

Promise Lock for Node.js

Simple execution lock based on Promises

Install & Usage

npm install prolock

Usage: prolock

The following code allows to lock a execution:

import { PromiseLock } from "prolock";

var prolock = PromiseLock();

// in function
var result = await prolock(async ()=>{
	// execution to lock
	return "result";
});

and/or:

// in function
var unlock = await prolock();
// execution to lock
// ...
unlock();

To create multiple locks just create an other instance of PromiseLock.

Usage: prolock with Timeout:

Use the following code to lock a execution but with Timeout if we do not get a lock.

import { PromiseLock } from "prolock";

var prolock = PromiseLock({ // global options:
	"timeout_lock": 3000,
	"release_lock": 4000
});

// in function
var result = await prolock(async ()=>{
	// execution to lock
	return "result";
}, {
	"timeout_lock": 1000,
	"release_lock": 2000
});

and/or:

// in function
var unlock = await prolock({
	"timeout_lock": 1000,
	"release_lock": 2000
});
// execution to lock
// ...
unlock();

Functions

Usage: prolock(callback: function, options: object) -> Promise

Usage: prolock(options: object) -> unlock function

Usage: PromiseLock(options: object) -> prolock function

Parameter

Param Type Description
callback function Async Function for locked execution
options object Options
options.timeout_lock number Timeout in ms for getting lock
options.release_lock number Timeout in ms for release of own execution to release lock
options.no_fail_on_timeout boolean Continue execution after failed getting lock

Detailed command reference: API

Exceptions

Message Code Description
Promise Lock: Could not get lock (Timeout) ETIMEOUTLOCK Timed out on getting Lock. See param timeout_lock
Promise Lock: Timeout released lock ETIMEOUTRELEASE Timed out on execution. See param release_lock
Promise Lock: Argument options invalid EINVALIDOPTIONS Given argument options is invalid
Promise Lock: Already unlocked by Timeout ETIMEOUTUNLOCK Unlock function was called, but lock was already timed out

License

This software is released under the MIT license.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Dependencies (0)

    Dev Dependencies (2)

    Package Sidebar

    Install

    npm i prolock

    Weekly Downloads

    1

    Version

    1.3.0

    License

    MIT

    Unpacked Size

    29.7 kB

    Total Files

    15

    Last publish

    Collaborators

    • simonwalz