You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nodebb/src/hotswap.js

34 lines
820 B
JavaScript

10 years ago
"use strict";
var HotSwap = {};
var winston = require('winston');
var stack;
HotSwap.prepare = function (app) {
stack = app._router.stack;
};
HotSwap.find = function (id) {
if (stack) {
for (var x = 0, numEntries = stack.length; x < numEntries; x += 1) {
if (stack[x].handle.hotswapId === id) {
return x;
}
}
} else {
winston.error('[hotswap] HotSwap module has not been prepared!');
}
};
HotSwap.replace = function (id, router) {
var idx = HotSwap.find(id);
if (idx) {
10 years ago
delete stack[idx].handle; // Destroy the old router
stack[idx].handle = router; // Replace with the new one
winston.verbose('[hotswap] Router with id `' + id + '` replaced successfully');
} else {
10 years ago
winston.warn('[hotswap] Could not find router in stack with hotswapId `' + id + '`');
}
};
module.exports = HotSwap;