Remove user reload for now

This commit is contained in:
Mattias Erming 2014-10-14 21:13:29 +02:00
parent 377e778f5d
commit 193b30b8a7
1 changed files with 30 additions and 94 deletions

View File

@ -8,14 +8,7 @@ var moment = require("moment");
module.exports = ClientManager; module.exports = ClientManager;
function ClientManager() { function ClientManager() {
var self = this;
this.clients = []; this.clients = [];
if(!/^win/.test(process.platform)) {
process.on('SIGHUP', function() {
console.log("Received 'SIGHUP'. Reloading Users.");
self.reloadUsers();
});
}
} }
ClientManager.prototype.findClient = function(name) { ClientManager.prototype.findClient = function(name) {
@ -55,35 +48,9 @@ ClientManager.prototype.loadUser = function(name) {
name, name,
json json
)); ));
console.log("User '%s' loaded.", name); console.log(
} "User '" + name + "' loaded."
}; );
ClientManager.prototype.reloadUsers = function() {
var users = this.getUsers();
for (var i in users) {
this.reloadUser(users[i]);
}
};
ClientManager.prototype.reloadUser = function(name) {
var client = this.findClient(name);
if (client) {
try {
var json = fs.readFileSync(
Helper.HOME + "/users/" + name + "/user.json",
"utf-8"
);
json = JSON.parse(json);
} catch(e) {
console.log(e);
return;
}
if (!json) {
return;
}
client.config = json;
console.log("User '%s' reloaded.", name);
} }
}; };
@ -144,66 +111,35 @@ ClientManager.prototype.removeUser = function(name) {
return true; return true;
}; };
ClientManager.prototype.watchUser = function(name) {
var self = this;
var client = this.findClient(name);
if(!client || client.watcher) {
return;
}
var path = Helper.HOME + "/users/" + client.name + "/user.json";
var lastReload = Date.now();
client.watcher = fs.watch(path, {persistent: false}, function(event, filename) {
switch (event) {
case "change":
// user.json modified
if(Date.now() - lastReload > 50) {
self.reloadUser(client.name);
lastReload = Date.now();
}
break;
default:
break;
}
});
};
ClientManager.prototype.autoload = function(sockets) { ClientManager.prototype.autoload = function(sockets) {
var self = this; var self = this;
var loaded = [];
setInterval(function() {
var loaded = _.pluck(
self.clients,
"name"
);
// Listen to new users being added/removed var added = _.difference(self.getUsers(), loaded);
fs.watch(Helper.HOME + "/users/", { persistent: false }, function(event, filename) { _.each(added, function(name) {
switch (event) { self.loadUser(name);
case "rename": });
if(filename === null) {
// User removed. var removed = _.difference(loaded, self.getUsers());
var removed = _(self.clients) _.each(removed, function(name) {
.pluck('name') var client = _.find(
.difference(self.getUsers()) self.clients, {
.value(); name: name
_.each(removed, function(name) { }
var client = self.findClient(name); );
if (client) { if (client) {
client.quit(); client.quit();
if(client.watcher) { self.clients = _.without(self.clients, client);
client.watcher.close(); console.log(
} "User '" + name + "' disconnected."
self.clients = _.without(self.clients, client); );
console.log("User '%s' disconnected.", name);
}
});
} else {
// User created.
self.loadUser(filename);
self.watchUser(filename);
} }
break; });
default: }, 1000);
break;
}
});
// Listen to user modification
_.each(this.clients, function(client) {
self.watchUser(client.name);
});
}; };