Skip to content
Merged
Show file tree
Hide file tree
Changes from 5 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions config.js
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,14 @@
*/
lmstEpoch: Date.UTC(2020, 2, 18, 0, 0, 0),

/*
* subscriptionMCWSFilterDelay: delay in milliseconds for batching filters for the same
* endpoint connection. Smaller value = quicker display of realtime data (ex, 10ms in a
* low latency environment), higher value = more efficient use of network bandwidth
* (ex, 100ms+ in a high latency environment)
*/
subscriptionMCWSFilterDelay: 100,

/**
* timeSystems: specify the time systems to use.
* Options are 'scet', 'ert', 'sclk', 'msl.sol' and 'lmst'.
Expand Down
5 changes: 0 additions & 5 deletions src/realtime/MCWSDataProductStreamProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@ import MCWSStreamProvider from './MCWSStreamProvider';
* @memberof {vista/telemetry}
*/
class MCWSDataProductStreamProvider extends MCWSStreamProvider {
constructor(openmct, vistaTime, options) {
super(openmct, vistaTime);
this.options = options;
}

getUrl(domainObject) {
return domainObject.telemetry?.dataProductStreamUrl;
}
Expand Down
8 changes: 0 additions & 8 deletions src/realtime/MCWSFrameEventStreamProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,6 @@ import MCWSStreamProvider from './MCWSStreamProvider';
* @memberof {vista/telemetry}
*/
class MCWSFrameEventStreamProvider extends MCWSStreamProvider {
/**
* @param {Object} openmct The Open MCT API
* @param {Object} vistaTime The Vista time API
*/
constructor(openmct, vistaTime) {
super(openmct, vistaTime);
}

/**
* Get the URL for streaming data for this domain object
* @param {Object} domainObject The domain object
Expand Down
5 changes: 4 additions & 1 deletion src/realtime/MCWSStreamProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,20 @@ import GlobalStaleness from 'services/globalStaleness/globalStaleness';
*/

class MCWSStreamProvider {
constructor(openmct, vistaTime) {
constructor(openmct, vistaTime, options) {
this.openmct = openmct;
this.vistaTime = function () {
return vistaTime;
};
this.options = options;

this.sessions = sessionService();
this.filterService = filterService();

this.subscriptions = {};
this.requests = {};

this.subscriptionMCWSFilterDelay = options.time?.subscriptionMCWSFilterDelay ?? 100;
}

processGlobalStaleness(data, latestTimestamp) {
Expand Down
9 changes: 6 additions & 3 deletions src/realtime/MCWSStreamWorkerScript.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,14 @@
* @param {Object} extraFilterTerms additional filter terms
* @param {Object} globalFilters global filters to apply
*/
constructor(url, property, topic, extraFilterTerms, globalFilters) {
constructor(url, property, topic, extraFilterTerms, globalFilters, subscriptionMCWSFilterDelay) {
this.url = url;
this.topic = topic;
this.subscribers = {};
this.property = property;
this.extraFilterTerms = extraFilterTerms;
this.globalFilters = globalFilters;
this.subscriptionMCWSFilterDelay = subscriptionMCWSFilterDelay ?? 100;
}

/**
Expand Down Expand Up @@ -140,7 +141,7 @@
this.pending = setTimeout(() => {
this.pending = undefined;
this.reconnect();
}, 100);
}, this.subscriptionMCWSFilterDelay);
}

/**
Expand Down Expand Up @@ -237,6 +238,7 @@
class MCWSStreamWorker {
constructor() {
this.connections = {};
this.subscriptionMCWSFilterDelay = 100; // Initialize with default value
}

/**
Expand All @@ -253,7 +255,8 @@
property,
this.activeTopic,
extraFilterTerms,
this.activeGlobalFilters
this.activeGlobalFilters,
this.subscriptionMCWSFilterDelay
);
}

Expand Down
18 changes: 9 additions & 9 deletions src/realtime/plugin.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,16 @@ function RealtimeTelemetryPlugin(vistaTime, options) {
return function install(openmct) {
filterService(openmct, options.globalFilters);

openmct.telemetry.addProvider(new MCWSChannelStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSEVRStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSEVRLevelStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSCommandStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSPacketSummaryEventProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSChannelStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSEVRStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSEVRLevelStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSCommandStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSPacketSummaryEventProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSDataProductStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSMessageStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSFrameSummaryStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSFrameEventStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSAlarmMessageStreamProvider(openmct, vistaTime));
openmct.telemetry.addProvider(new MCWSMessageStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSFrameSummaryStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSFrameEventStreamProvider(openmct, vistaTime, options));
openmct.telemetry.addProvider(new MCWSAlarmMessageStreamProvider(openmct, vistaTime, options));
}
}

Expand Down