Commit 2326b722bbf3e96e4150d42ddf1ccc265f828131

Authored by Adhidarma Hadiwinoto
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