UNPKG

895 BJavaScriptView Raw
1
2
3const cls = require('continuation-local-storage');
4
5const logger = require('./logger');
6const config = require('./config');
7
8let ns = null;
9
10// load config
11module.exports.init = function() {
12 const options = config.cls || {};
13 ns = options.namespace || 'igo';
14 cls.createNamespace(ns);
15};
16
17//
18module.exports.middleware = function(req, res, next) {
19 const namespace = cls.getNamespace(ns);
20 namespace.bindEmitter(req);
21 namespace.bindEmitter(res);
22 namespace.run(function() {
23 try {
24 next();
25 } catch (err) {
26 logger.error('Igo cls error: ' + err);
27 }
28 });
29};
30
31//
32module.exports.getNamespace = function(name) {
33 return cls.getNamespace(name || ns);
34};
35
36//
37module.exports.bind = function(callback) {
38 const namespace = module.exports.getNamespace();
39 if (namespace && callback) {
40 return namespace.bind(callback);
41 }
42 return callback;
43}