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