-
Notifications
You must be signed in to change notification settings - Fork 4
/
node_helper.js
72 lines (59 loc) · 2.02 KB
/
node_helper.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
var NodeHelper = require("node_helper");
var NsFetcher = require("./NsFetcher.js");
module.exports = NodeHelper.create({
// Override start method.
start: function() {
this.fetchers = {};
console.log("Starting node helper for: " + this.name);
},
forFetchers: function(callback) {
var self = this;
Object.keys(this.fetchers).forEach(function(key) {
callback(self.fetchers[key]);
});
},
// Override socketNotificationReceived method.
socketNotificationReceived: function(notification, payload) {
//console.log("Notification received: " + notification);
if (notification === "ADD_CONFIG") {
this.createFetcher(payload);
} else if(notification === "SUSPEND") {
this.forFetchers(f => f.stopFetch() );
} else if(notification === "RESUME") {
this.forFetchers(f => f.startFetch() );
}
},
/* createFetcher(config)
* Creates a fetcher for a station if it doesn"t exist yet.
* Otherwise it reuses the existing one.
*
* attribute station string - The name of the station.
* attribute reloadInterval number - Reload interval in milliseconds.
*/
createFetcher: function(config) { //station, user, pass, reloadInterval) {
var self = this;
if (!("moduleId" in config)) {
console.log("nstreinen createFetcher called without moduleId");
return;
}
var fetcher;
if (typeof self.fetchers[config.moduleId] === "undefined") {
console.log("Create new fetcher for moduleId: " + config.moduleId);
fetcher = new NsFetcher(config);
fetcher.onReceive(function(data) {
//console.log("Received:", data);
self.sendSocketNotification("DATA", {moduleId: config.moduleId, trains: data});
});
fetcher.onError(function(error) {
console.log("Error:", error);
self.sendSocketNotification("FETCH_ERROR", {moduleId: config.moduleId, error: error});
});
self.fetchers[config.moduleId] = fetcher;
} else {
console.log("Use existing fetcher for moduleId: " + config.moduleId);
fetcher = self.fetchers[config.moduleId];
//fetcher.broadcastTrains();
}
fetcher.startFetch();
},
});