Commit 2326b722bbf3e96e4150d42ddf1ccc265f828131
1 parent
bf4679e449
Exists in
master
Locks on register modem
Showing 1 changed file with 33 additions and 25 deletions Side-by-side Diff
lib/register-modem.js
... | ... | @@ -3,9 +3,13 @@ |
3 | 3 | const path = require('path'); |
4 | 4 | const request = require('request'); |
5 | 5 | |
6 | +const locks = require('locks'); | |
7 | + | |
6 | 8 | const config = require('komodo-sdk/config'); |
7 | 9 | const logger = require('komodo-sdk/logger'); |
8 | 10 | |
11 | +const mutex = locks.createMutex(); | |
12 | + | |
9 | 13 | function reportUrl() { |
10 | 14 | if (config.report_url.register_modem) { |
11 | 15 | return config.report_url.register_modem; |
... | ... | @@ -16,29 +20,33 @@ function reportUrl() { |
16 | 20 | } |
17 | 21 | |
18 | 22 | module.exports = (modemInfo) => { |
19 | - const requestOptions = { | |
20 | - url: reportUrl(), | |
21 | - qs: { | |
22 | - modem: config.name, | |
23 | - modem_device: config.modem.device, | |
24 | - modem_imsi: modemInfo.imsi, | |
25 | - modem_msisdn: modemInfo.msisdn, | |
26 | - modem_network_id: modemInfo.networkId, | |
27 | - modem_network_name: modemInfo.networkName, | |
28 | - modem_signal_strength: modemInfo.signalStrength, | |
29 | - uptime: Math.floor(process.uptime()), | |
30 | - report_port: config.http_command_server.listen_port, | |
31 | - report_apikey: config.http_command_server.apikey, | |
32 | - report_path_sms: '/sms', | |
33 | - }, | |
34 | - }; | |
35 | - | |
36 | - logger.info('Sending modem registration to center'); | |
37 | - request(requestOptions, (err, res) => { | |
38 | - if (err) { | |
39 | - logger.warn(`Error registering modem. ${err.toString()}`); | |
40 | - } else if (res.statusCode !== 200) { | |
41 | - logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`); | |
42 | - } | |
43 | - }); | |
23 | + if (mutex.tryLock()) { | |
24 | + const requestOptions = { | |
25 | + url: reportUrl(), | |
26 | + qs: { | |
27 | + modem: config.name, | |
28 | + modem_device: config.modem.device, | |
29 | + modem_imsi: modemInfo.imsi, | |
30 | + modem_msisdn: modemInfo.msisdn, | |
31 | + modem_network_id: modemInfo.networkId, | |
32 | + modem_network_name: modemInfo.networkName, | |
33 | + modem_signal_strength: modemInfo.signalStrength, | |
34 | + uptime: Math.floor(process.uptime()), | |
35 | + report_port: config.http_command_server.listen_port, | |
36 | + report_apikey: config.http_command_server.apikey, | |
37 | + report_path_sms: '/sms', | |
38 | + }, | |
39 | + }; | |
40 | + | |
41 | + logger.info('Sending modem registration to center'); | |
42 | + request(requestOptions, (err, res) => { | |
43 | + mutex.unlock(); | |
44 | + | |
45 | + if (err) { | |
46 | + logger.warn(`Error registering modem. ${err.toString()}`); | |
47 | + } else if (res.statusCode !== 200) { | |
48 | + logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`); | |
49 | + } | |
50 | + }); | |
51 | + } | |
44 | 52 | }; |