From c693fd8220e7d95d116e3b06f2b54efae0f19bbc Mon Sep 17 00:00:00 2001 From: Sandro Weber <webers@in.tum.de> Date: Thu, 4 Aug 2022 18:30:39 +0200 Subject: [PATCH] [NRRPLT-8620] trigger proxy storage scan button --- package-lock.json | 6 +++--- package.json | 2 +- .../nrp-core-dashboard/nrp-core-dashboard.js | 10 +++++++++ .../files/experiment-storage-service.js | 16 ++++++++++++-- src/services/mqtt-client-service.js | 21 +++++-------------- 5 files changed, 33 insertions(+), 22 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5b03215..e9b3733 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11634,9 +11634,9 @@ } }, "nrp-jsproto": { - "version": "1.1.1-alpha.10", - "resolved": "https://registry.npmjs.org/nrp-jsproto/-/nrp-jsproto-1.1.1-alpha.10.tgz", - "integrity": "sha512-KFe2AQuhtx4wD76PIzxlhKFXtWYeUtyqSkONA8nYvIV9HfG67q09Qcnzhl745jZHZHZMC03xj9QVEr0x5so8Cg==" + "version": "1.1.1-alpha.20", + "resolved": "https://registry.npmjs.org/nrp-jsproto/-/nrp-jsproto-1.1.1-alpha.20.tgz", + "integrity": "sha512-n39H3PBdhA+ojWIRe43ZcSJEZeogGZ91o5beHKrLdbbjNGcduOAzUS75AYE2hQ0YbOWtGwNVDQL9LGHK0LZugQ==" }, "nth-check": { "version": "1.0.2", diff --git a/package.json b/package.json index 23c65b4..c992410 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "jquery": "3.6.0", "jszip": "3.2.0", "mqtt": "4.3.5", - "nrp-jsproto": "1.1.1-alpha.10", + "nrp-jsproto": "1.1.1-alpha.20", "protobufjs": "6.11.2", "react": "^17.0.1", "react-bootstrap": "1.4.0", diff --git a/src/components/nrp-core-dashboard/nrp-core-dashboard.js b/src/components/nrp-core-dashboard/nrp-core-dashboard.js index ee0b7ad..f207231 100644 --- a/src/components/nrp-core-dashboard/nrp-core-dashboard.js +++ b/src/components/nrp-core-dashboard/nrp-core-dashboard.js @@ -1,6 +1,8 @@ +import { DomainDisabledOutlined } from '@material-ui/icons'; import React from 'react'; import MqttClientService from '../../services/mqtt-client-service'; +import ExperimentStorageService from '../../services/experiments/files/experiment-storage-service'; export default class NrpCoreDashboard extends React.Component { constructor(props) { @@ -22,10 +24,18 @@ export default class NrpCoreDashboard extends React.Component { }); } + async triggerProxyScanStorage() { + let result = await ExperimentStorageService.instance.scanStorage(); + console.info('triggerProxyScanStorage:'); + console.info(result); + } + render() { return ( <div> {this.mqttBrokerUrl} + <br /> + <button onClick={this.triggerProxyScanStorage}>Proxy Scan Storage</button> </div> ); } diff --git a/src/services/experiments/files/experiment-storage-service.js b/src/services/experiments/files/experiment-storage-service.js index ac20e1a..d2957fc 100644 --- a/src/services/experiments/files/experiment-storage-service.js +++ b/src/services/experiments/files/experiment-storage-service.js @@ -5,8 +5,11 @@ import endpoints from '../../proxy/data/endpoints.json'; import config from '../../../config.json'; import DialogService from '../../dialog-service.js'; -const storageURL = `${config.api.proxy.url}${endpoints.proxy.storage.url}`; -const storageExperimentsURL = `${config.api.proxy.url}${endpoints.proxy.storage.experiments.url}`; +const PROXY_URL = config.api.proxy.url; +const SCAN_STORAGE_URL = `${PROXY_URL}${endpoints.proxy.storage.scanStorage.url}`; +const storageURL = `${PROXY_URL}${endpoints.proxy.storage.url}`; +const storageExperimentsURL = `${PROXY_URL}${endpoints.proxy.storage.experiments.url}`; + let _instance = null; const SINGLETON_ENFORCER = Symbol(); @@ -71,6 +74,7 @@ class ExperimentStorageService extends HttpService { if (!this.experiments || forceUpdate) { try { let experimentList = await (await this.httpRequestGET(storageExperimentsURL)).json(); + console.info(['ExperimentStorageService.getExperiments()', experimentList]); // filter out experiments with incomplete configuration (probably storage corruption) experimentList = experimentList.filter(experiment => experiment.configuration.experimentFile); this.sortExperiments(experimentList); @@ -275,6 +279,14 @@ class ExperimentStorageService extends HttpService { 'please make sure that the contentType and the body type match.'); } } + + /** + * Trigger proxy to scan storage. + * @returns {promise} Result + */ + async scanStorage() { + return await (await this.httpRequestPOST(SCAN_STORAGE_URL)).json(); + } } ExperimentStorageService.EVENTS = Object.freeze({ diff --git a/src/services/mqtt-client-service.js b/src/services/mqtt-client-service.js index 890bb0c..ce09aa0 100644 --- a/src/services/mqtt-client-service.js +++ b/src/services/mqtt-client-service.js @@ -1,7 +1,7 @@ import mqtt from 'mqtt'; import { EventEmitter } from 'events'; -import * as proto from 'nrp-jsproto/nrp-engine_msgs-protobufjs'; +//import * as proto from 'nrp-jsproto/engine_grpc_pb'; let _instance = null; const SINGLETON_ENFORCER = Symbol(); @@ -16,7 +16,7 @@ export default class MqttClientService extends EventEmitter { throw new Error('Use ' + this.constructor.name + '.instance'); } - console.info(proto); + //console.info(proto); } static get instance() { @@ -47,20 +47,9 @@ export default class MqttClientService extends EventEmitter { console.info('MQTT message: [topic, payload, packet]'); console.info([topic, payload, packet]); - try { - if (topic.endsWith('/type')) { - let msg = String(payload); - console.info('"' + topic + '" message format = ' + msg); - } - else { - let msg = proto.Engine.DataPackMessage.decode(payload); - console.info('DataPackMessage'); - console.info(msg); - } - } - catch (error) { - console.error(error); - } + // step 0: deserialize the payload => messageData + // step 1: pick subs based on topic => subs + // step 2: foreach(sub) {sub.callback(messageData, topic);} } } -- GitLab