UNPKG

omelop

Version:

[![Build Status](https://travis-ci.org/node-omelop/omelop.svg?branch=master)](https://travis-ci.org/node-omelop/omelop)

45 lines 3.45 kB
"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