You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
1.6 KiB
71 lines
1.6 KiB
'use strict';
|
|
const errorObject = { value: null };
|
|
function tryCatch(fn, ctx, args) {
|
|
try {
|
|
return fn.apply(ctx, args);
|
|
} catch (e) {
|
|
errorObject.value = e;
|
|
return errorObject;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Waits for a redis client to be ready.
|
|
* @param {Redis} redis client
|
|
*/
|
|
function isRedisReady(client) {
|
|
return new Promise((resolve, reject) => {
|
|
if (client.status === 'ready') {
|
|
resolve();
|
|
} else {
|
|
function handleReady() {
|
|
client.removeListener('end', handleEnd);
|
|
client.removeListener('error', handleError);
|
|
resolve();
|
|
}
|
|
|
|
let lastError;
|
|
function handleError(err) {
|
|
lastError = err;
|
|
}
|
|
|
|
function handleEnd() {
|
|
client.removeListener('ready', handleReady);
|
|
client.removeListener('error', handleError);
|
|
reject(lastError);
|
|
}
|
|
|
|
client.once('ready', handleReady);
|
|
client.on('error', handleError);
|
|
client.once('end', handleEnd);
|
|
}
|
|
});
|
|
}
|
|
|
|
module.exports.errorObject = errorObject;
|
|
module.exports.tryCatch = tryCatch;
|
|
module.exports.isRedisReady = isRedisReady;
|
|
module.exports.emitSafe = function(emitter, event, ...args) {
|
|
try {
|
|
return emitter.emit(event, ...args);
|
|
} catch (err) {
|
|
try {
|
|
return emitter.emit('error', err);
|
|
} catch (err) {
|
|
// We give up if the error event also throws an exception.
|
|
console.error(err);
|
|
}
|
|
}
|
|
};
|
|
|
|
module.exports.MetricsTime = {
|
|
ONE_MINUTE: 1,
|
|
FIVE_MINUTES: 5,
|
|
FIFTEEN_MINUTES: 15,
|
|
THIRTY_MINUTES: 30,
|
|
ONE_HOUR: 60,
|
|
ONE_WEEK: 60 * 24 * 7,
|
|
TWO_WEEKS: 60 * 24 * 7 * 2,
|
|
ONE_MONTH: 60 * 24 * 7 * 2 * 4
|
|
};
|