Blame view
lib/mutex.js
2.11 KB
cba7eef40
|
1 |
'use strict'; |
954a3dfb3
|
2 |
const DEBUGMODE = process.env.NODE_ENV !== 'production'; |
cba7eef40
|
3 |
const locks = require('locks'); |
c50a62000
|
4 |
const logger = require('komodo-sdk/logger'); |
cba7eef40
|
5 6 7 |
const mutexWaitForOK = locks.createMutex(); const mutexCommand = locks.createMutex(); |
0bdac2f9c
|
8 |
const mutexSubCommand = locks.createMutex(); |
cba7eef40
|
9 |
function setLockWaitForOK() { |
954a3dfb3
|
10 |
if (DEBUGMODE) logger.verbose('Entering MUTEX OK'); |
cba7eef40
|
11 12 |
return new Promise((resolve) => { mutexWaitForOK.lock(() => { |
954a3dfb3
|
13 |
if (DEBUGMODE) logger.verbose('MUTEX OK entered'); |
cba7eef40
|
14 15 16 17 18 19 20 |
resolve(true); }); }); } function releaseLockWaitForOK() { try { |
954a3dfb3
|
21 |
if (DEBUGMODE) logger.verbose('Leaving MUTEX OK'); |
cba7eef40
|
22 23 24 25 26 27 28 |
mutexWaitForOK.unlock(); } catch (e) { // } } function setLockWaitForCommand() { |
954a3dfb3
|
29 |
if (DEBUGMODE) logger.verbose('Entering MUTEX Command'); |
cba7eef40
|
30 31 |
return new Promise((resolve) => { mutexCommand.lock(() => { |
954a3dfb3
|
32 |
if (DEBUGMODE) logger.verbose('MUTEX Command entered'); |
cba7eef40
|
33 34 35 36 |
resolve(true); }); }); } |
0bdac2f9c
|
37 38 39 |
function tryLockWaitForCommand() { return mutexCommand.tryLock(); } |
cba7eef40
|
40 |
function releaseLockWaitForCommand() { |
0bdac2f9c
|
41 |
try { |
954a3dfb3
|
42 |
if (DEBUGMODE) logger.verbose('Leaving MUTEX Command'); |
0bdac2f9c
|
43 44 45 46 47 48 49 |
mutexCommand.unlock(); } catch (e) { // } } function setLockWaitForSubCommand() { |
954a3dfb3
|
50 |
if (DEBUGMODE) logger.verbose('Entering MUTEX SUBCOMMAND'); |
0bdac2f9c
|
51 52 |
return new Promise((resolve) => { mutexSubCommand.lock(() => { |
954a3dfb3
|
53 |
if (DEBUGMODE) logger.verbose('MUTEX SUBCOMMAND entered'); |
0bdac2f9c
|
54 55 56 57 58 59 |
resolve(true); }); }); } function releaseLockWaitForSubCommand() { |
0bdac2f9c
|
60 |
try { |
954a3dfb3
|
61 |
if (DEBUGMODE) logger.verbose('Leaving MUTEX SUBCOMMAND'); |
0bdac2f9c
|
62 63 64 65 |
mutexSubCommand.unlock(); } catch (e) { // } |
cba7eef40
|
66 67 68 69 70 71 72 |
} exports.setLockWaitForOK = setLockWaitForOK; exports.releaseLockWaitForOK = releaseLockWaitForOK; exports.setLockWaitForCommand = setLockWaitForCommand; exports.releaseLockWaitForCommand = releaseLockWaitForCommand; |
0bdac2f9c
|
73 74 75 76 |
exports.tryLockWaitForCommand = tryLockWaitForCommand; exports.setLockWaitForSubCommand = setLockWaitForSubCommand; exports.releaseLockWaitForSubCommand = releaseLockWaitForSubCommand; |