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 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 };