1 |
|
2 |
|
3 | const cls = require('continuation-local-storage');
|
4 |
|
5 | const logger = require('./logger');
|
6 | const config = require('./config');
|
7 |
|
8 | let ns = null;
|
9 |
|
10 |
|
11 | module.exports.init = function() {
|
12 | const options = config.cls || {};
|
13 | ns = options.namespace || 'igo';
|
14 | cls.createNamespace(ns);
|
15 | };
|
16 |
|
17 |
|
18 | module.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 |
|
32 | module.exports.getNamespace = function(name) {
|
33 | return cls.getNamespace(name || ns);
|
34 | };
|
35 |
|
36 |
|
37 | module.exports.bind = function(callback) {
|
38 | const namespace = module.exports.getNamespace();
|
39 | if (namespace && callback) {
|
40 | return namespace.bind(callback);
|
41 | }
|
42 | return callback;
|
43 | }
|