mutex.js 953 Bytes
'use strict';

const locks = require('locks');

const mutexWaitForOK = locks.createMutex();
const mutexCommand = locks.createMutex();

function setLockWaitForOK() {
    return new Promise((resolve) => {
        mutexWaitForOK.lock(() => {
            resolve(true);
        });
    });
}

function releaseLockWaitForOK() {
    try {
        mutexWaitForOK.unlock();
    } catch (e) {
        //
    }
}

function setLockWaitForCommand() {
    return new Promise((resolve) => {
        mutexCommand.lock(() => {
            resolve(true);
        });
    });
}

function releaseLockWaitForCommand() {
    setTimeout(() => {
        try {
            mutexCommand.unlock();
        } catch (e) {
            //
        }
    }, 1500);
}

exports.setLockWaitForOK = setLockWaitForOK;
exports.releaseLockWaitForOK = releaseLockWaitForOK;

exports.setLockWaitForCommand = setLockWaitForCommand;
exports.releaseLockWaitForCommand = releaseLockWaitForCommand;