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