|
|
|
var path = require('path');
|
|
|
|
var continuationLocalStorage = require('continuation-local-storage');
|
|
|
|
var APP_NAMESPACE = require(path.join(__dirname, '../../package.json')).name;
|
|
|
|
var namespace = continuationLocalStorage.createNamespace(APP_NAMESPACE);
|
|
|
|
|
|
|
|
var cls = {};
|
|
|
|
|
|
|
|
cls.http = function (req, res, next) {
|
|
|
|
namespace.run(function() {
|
|
|
|
namespace.set('http', {req: req, res: res});
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
cls.socket = function (socket, payload, event, next) {
|
|
|
|
namespace.run(function() {
|
|
|
|
namespace.set('ws', {
|
|
|
|
socket: socket,
|
|
|
|
payload: payload,
|
|
|
|
// if it's a null event, then we grab it from the payload
|
|
|
|
event: event || ((payload || {}).data || [])[0]});
|
|
|
|
next();
|
|
|
|
});
|
|
|
|
};
|
|
|
|
|
|
|
|
cls.get = function (key) {
|
|
|
|
return namespace.get(key);
|
|
|
|
};
|
|
|
|
|
|
|
|
cls.set = function (key, value) {
|
|
|
|
return namespace.set(key, value);
|
|
|
|
};
|
|
|
|
|
|
|
|
cls.setItem = cls.set;
|
|
|
|
cls.getItem = cls.set;
|
|
|
|
cls.getNamespace = cls.storage;
|
|
|
|
cls.namespace = namespace;
|
|
|
|
cls.continuationLocalStorage = continuationLocalStorage;
|
|
|
|
|
|
|
|
module.exports = cls;
|
|
|
|
|
|
|
|
|