omelop
Version:
[](https://travis-ci.org/node-omelop/omelop)
45 lines • 3.45 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TimeoutFilter = void 0;
/**
* Filter for timeout.
* Print a warn information when request timeout.
*/
const omelop_logger_1 = require("omelop-logger");
let logger = (0, omelop_logger_1.getLogger)('omelop', __filename);
let DEFAULT_TIMEOUT = 3000;
let DEFAULT_SIZE = 500;
class TimeoutFilter {
constructor(timeout = DEFAULT_TIMEOUT, maxSize = DEFAULT_SIZE) {
this.timeout = timeout;
this.maxSize = maxSize;
this.timeouts = {};
this.curId = 0;
this.timeOutCount = 0;
}
before(routeRecord, msg, session, next) {
if (this.timeOutCount > this.maxSize) {
logger.warn('timeout filter is out of range, current size is %s, max size is %s', this.timeOutCount, this.maxSize);
next(null);
return;
}
this.curId++;
this.timeOutCount++;
this.timeouts[this.curId] = setTimeout(function () {
logger.error('request %j timeout.', routeRecord ? routeRecord.route : routeRecord);
}, this.timeout);
session.__timeout__ = this.curId;
next(null);
}
after(err, routeRecord, msg, session, resp, next) {
let timeout = this.timeouts[session.__timeout__];
if (timeout) {
clearTimeout(timeout);
this.timeOutCount--;
this.timeouts[session.__timeout__] = undefined;
}
next(err);
}
}
exports.TimeoutFilter = TimeoutFilter;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZW91dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9maWx0ZXJzL2hhbmRsZXIvdGltZW91dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7O0dBR0c7QUFDSCxpREFBMEM7QUFFMUMsSUFBSSxNQUFNLEdBQUcsSUFBQSx5QkFBUyxFQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztBQU83QyxJQUFJLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDM0IsSUFBSSxZQUFZLEdBQUcsR0FBRyxDQUFDO0FBRXZCLE1BQWEsYUFBYTtJQUt0QixZQUFvQixVQUFVLGVBQWUsRUFBVSxVQUFVLFlBQVk7UUFBekQsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7UUFBVSxZQUFPLEdBQVAsT0FBTyxDQUFlO1FBSjdFLGFBQVEsR0FBcUMsRUFBRSxDQUFDO1FBQ2hELFVBQUssR0FBRyxDQUFDLENBQUM7UUFDRixpQkFBWSxHQUFHLENBQUMsQ0FBQztJQUd6QixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQXdCLEVBQUUsR0FBUSxFQUFFLE9BQWlDLEVBQUUsSUFBcUI7UUFDL0YsSUFBSSxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDbEMsTUFBTSxDQUFDLElBQUksQ0FBQyxvRUFBb0UsRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUNuSCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDWCxPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDYixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUN2RixDQUFDLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hCLE9BQWUsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMxQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQVUsRUFBRSxXQUF3QixFQUFFLEdBQVEsRUFBRSxPQUFpQyxFQUFFLElBQVMsRUFBRSxJQUFxQjtRQUNySCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFFLE9BQWUsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMxRCxJQUFJLE9BQU8sRUFBRTtZQUNULFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBRSxPQUFlLENBQUMsV0FBVyxDQUFDLEdBQUcsU0FBUyxDQUFDO1NBQzNEO1FBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztDQUVKO0FBakNELHNDQWlDQyJ9