From 4e2f695bedd9e46ab49a22ac061a2e17f5a0ac47 Mon Sep 17 00:00:00 2001
From: Adhidarma Hadiwinoto <me@adhisimon.org>
Date: Fri, 2 Aug 2019 16:29:05 +0700
Subject: [PATCH] Messages counter

---
 lib/counters.js | 24 ++++++++++++++++++++++++
 lib/modem.js    |  3 +++
 2 files changed, 27 insertions(+)
 create mode 100644 lib/counters.js

diff --git a/lib/counters.js b/lib/counters.js
new file mode 100644
index 0000000..bd20552
--- /dev/null
+++ b/lib/counters.js
@@ -0,0 +1,24 @@
+'use strict';
+
+const countersSdk = require('komodo-sdk/counters');
+
+function increment(name, modemInfo) {
+    if (!name || !modemInfo.imsi) return;
+
+    countersSdk.increment(`IMSI_${modemInfo.IMSI}_${name}`);
+}
+
+function get(name, modemInfo) {
+    return new Promise(async (resolve) => {
+        if (!name || !modemInfo.imsi) {
+            resolve(0);
+            return;
+        }
+
+        const value = await countersSdk.get(`IMSI_${modemInfo.IMSI}_${name}`);
+        resolve(Number(value));
+    });
+}
+
+exports.get = get;
+exports.increment = increment;
diff --git a/lib/modem.js b/lib/modem.js
index 93b7506..a98f810 100644
--- a/lib/modem.js
+++ b/lib/modem.js
@@ -21,6 +21,7 @@ const dbCops = require('./db-cops');
 const reportSender = require('./report-sender');
 // const msisdn = require('./msisdn');
 const registerModem = require('./register-modem');
+const counters = require('./counters');
 
 const modemInfo = {
     device: config.modem.device,
@@ -145,6 +146,7 @@ parserReadLine.on('data', (data) => {
                 registerModem(modemInfo);
             }
         } else if (data.indexOf('+CMTI: ') === 0) {
+            counters.increment('MESSAGE_RECEIVED', modemInfo);
             onIncomingSMS(data);
         } else if (data.indexOf('+COPS: ') === 0) {
             onCOPS(data);
@@ -288,6 +290,7 @@ async function sendSMS(destination, msg) {
     await mutex.setLockWaitForCommand();
 
     logger.info('Sending message', { destination, msg });
+    counters.increment('MESSAGE_SENT', modemInfo);
 
     const correctedDestination = `+${destination}`.replace(/^0/, '62').replace(/^\++/, '+');
 
-- 
1.9.0