-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMain.js
54 lines (46 loc) · 2.05 KB
/
Main.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
var redis = require('redis');
const redisURL = process.env.REDIS_URL;
var GameLookup = require('./GameLookup');
var ServerLookup = require('./ServerLookup');
var ServerEventListener = require('./ServerEventListener');
var ServerEventHandler = require('./ServerEventHandler');
var game_lookup = new GameLookup(redis.createClient(redisURL));
var server_lookup = new ServerLookup(redis.createClient(redisURL));
var webhooks = {backendNotifications: process.env.DISCORD_BACKEND_NOTIFICATIONS_WEBHOOK};
var server_event_handler = new ServerEventHandler(webhooks, redis.createClient(redisURL), server_lookup, game_lookup);
function serverEventHandler(type, server_key) {
server_event_handler.handleSBUpdate(type, server_key);
}
var server_event_listener;
server_lookup.getAllServers().then(function(servers) {
var promises = [];
for(var server of servers) {
promises.push(server_event_handler.handleSBUpdate("update", server, true));
}
Promise.all(promises).then(function() {
server_event_handler.resyncGroupServerCount().then(function() {
server_event_listener = new ServerEventListener(process.env.RABBITMQ_URL, serverEventHandler);
})
})
});
function resyncAllGroups() {
return new Promise(function(resolve, reject) {
server_lookup.getAllServers().then(function(servers) {
var promises = [];
for(var server of servers) {
promises.push(server_event_handler.handleSBUpdate("update", server, true));
}
Promise.all(promises).then(function() {
promises = [];
promises.push(server_event_handler.resyncGroupServerCount())
Promise.all(promises).then(function() {
server_event_handler.sendPrivateNotification("Resynced ServerBrowsing GroupIDs");
resolve();
}, reject);
}, reject);
}, reject);
});
}
//resync group listing periodically
const RESYNC_GROUP_INTERVAL = 600000; //10 mins
setInterval(resyncAllGroups, RESYNC_GROUP_INTERVAL);