From efe4bf3275b61546004f6f56bf6b727d6718a184 Mon Sep 17 00:00:00 2001
From: ManosAngelidis <angelidis@fortiss.org>
Date: Tue, 2 Aug 2022 09:59:25 +0200
Subject: [PATCH] [NRRPLT-8384-mqtt]

---
 .../nrp-core-dashboard/nrp-core-dashboard.js  | 11 ++---
 src/services/mqtt-client-service.js           | 42 ++++++++++++++++++-
 2 files changed, 46 insertions(+), 7 deletions(-)

diff --git a/src/components/nrp-core-dashboard/nrp-core-dashboard.js b/src/components/nrp-core-dashboard/nrp-core-dashboard.js
index ee0b7ad..90bba0c 100644
--- a/src/components/nrp-core-dashboard/nrp-core-dashboard.js
+++ b/src/components/nrp-core-dashboard/nrp-core-dashboard.js
@@ -15,11 +15,12 @@ export default class NrpCoreDashboard extends React.Component {
   }
 
   onMqttClientConnected(mqttClient) {
-    mqttClient.subscribe('#', (err) => {
-      if (err) {
-        console.error(err);
-      }
-    });
+    mqttClient.subscribeToTopic('test_topic');
+    //mqttClient.subscribe('#', (err) => {
+    //  if (err) {
+    //    console.error(err);
+    //  }
+    //};
   }
 
   render() {
diff --git a/src/services/mqtt-client-service.js b/src/services/mqtt-client-service.js
index 890bb0c..c13e604 100644
--- a/src/services/mqtt-client-service.js
+++ b/src/services/mqtt-client-service.js
@@ -1,7 +1,10 @@
 import mqtt from 'mqtt';
 import { EventEmitter } from 'events';
 
-import * as proto from 'nrp-jsproto/nrp-engine_msgs-protobufjs';
+//import * as proto from 'nrp-jsproto/nrp-engine_msgs-protobuf.js';
+import { DataPackMessage } from '../../node_modules/nrp-jsproto/engine_grpc_pb.js';
+import jspb from 'google-protobuf';
+//import { hasSubscribers } from 'diagnostics_channel';
 
 let _instance = null;
 const SINGLETON_ENFORCER = Symbol();
@@ -16,7 +19,9 @@ export default class MqttClientService extends EventEmitter {
       throw new Error('Use ' + this.constructor.name + '.instance');
     }
 
-    console.info(proto);
+    this.subTokensMap = new Map();
+
+    console.info(DataPackMessage);
   }
 
   static get instance() {
@@ -62,6 +67,39 @@ export default class MqttClientService extends EventEmitter {
       console.error(error);
     }
   }
+
+  subscribeToTopic(topic, callback=Function()){
+    const token = {
+      topic: topic,
+      callback: callback
+    };
+    if (this.subTokensMap.has(token.topic)){
+      this.subTokensMap.set(
+        token.topic,
+        [this.subTokensMap.get(token.topic), token]
+      );
+    }
+    else{
+      this.subTokensMap.set(
+        token.topic,
+        token
+      );
+    }
+    console.info('You have been subscribed to topic ' + topic);
+    return token;
+  }
+
+  static getProtoOneofData(protoMsg, oneofCaseNumber) {
+    return jspb.Message.getField(protoMsg, oneofCaseNumber);
+  }
+
+  static getDataPackMessageOneofCaseString(protoMsg) {
+    for (let dataCase in DataPackMessage.DataCase) {
+      if (DataPackMessage.DataCase[dataCase] === protoMsg.getDataCase()) {
+        return dataCase;
+      }
+    }
+  }
 }
 
 MqttClientService.EVENTS = Object.freeze({
-- 
GitLab