mirror of
https://github.com/nasa/openmct.git
synced 2024-12-20 05:37:53 +00:00
[Code Style] Begin refactoring telemetry bundle
Begin refactoring telemetry bundle to use prototype for methods, WTD-1482.
This commit is contained in:
parent
365134b085
commit
1ea6f7620e
@ -31,6 +31,32 @@ define(
|
|||||||
function () {
|
function () {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Request telemetry data.
|
||||||
|
* @param {TelemetryRequest[]} requests and array of
|
||||||
|
* requests to be handled
|
||||||
|
* @returns {Promise} a promise for telemetry data
|
||||||
|
* which may (or may not, depending on
|
||||||
|
* availability) satisfy the requests
|
||||||
|
* @method TelemetryService#requestTelemetry
|
||||||
|
*/
|
||||||
|
/**
|
||||||
|
* Subscribe to streaming updates to telemetry data.
|
||||||
|
* The provided callback will be invoked as new
|
||||||
|
* telemetry becomes available; as an argument, it
|
||||||
|
* will receive an object of key-value pairs, where
|
||||||
|
* keys are source identifiers and values are objects
|
||||||
|
* of key-value pairs, where keys are point identifiers
|
||||||
|
* and values are TelemetrySeries objects containing
|
||||||
|
* the latest streaming telemetry.
|
||||||
|
* @param {Function} callback the callback to invoke
|
||||||
|
* @param {TelemetryRequest[]} requests an array of
|
||||||
|
* requests to be subscribed upon
|
||||||
|
* @returns {Function} a function which can be called
|
||||||
|
* to unsubscribe
|
||||||
|
* @method TelmetryService#subscribe
|
||||||
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A telemetry aggregator makes many telemetry providers
|
* A telemetry aggregator makes many telemetry providers
|
||||||
* appear as one.
|
* appear as one.
|
||||||
@ -39,77 +65,50 @@ define(
|
|||||||
* @constructor
|
* @constructor
|
||||||
*/
|
*/
|
||||||
function TelemetryAggregator($q, telemetryProviders) {
|
function TelemetryAggregator($q, telemetryProviders) {
|
||||||
|
this.$q = $q;
|
||||||
// Merge the results from many providers into one
|
this.telemetryProviders = telemetryProviders;
|
||||||
// result object.
|
|
||||||
function mergeResults(results) {
|
|
||||||
var merged = {};
|
|
||||||
|
|
||||||
results.forEach(function (result) {
|
|
||||||
Object.keys(result).forEach(function (k) {
|
|
||||||
merged[k] = result[k];
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
return merged;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Request telemetry from all providers; once they've
|
|
||||||
// responded, merge the results into one result object.
|
|
||||||
function requestTelemetry(requests) {
|
|
||||||
return $q.all(telemetryProviders.map(function (provider) {
|
|
||||||
return provider.requestTelemetry(requests);
|
|
||||||
})).then(mergeResults);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Subscribe to updates from all providers
|
|
||||||
function subscribe(callback, requests) {
|
|
||||||
var unsubscribes = telemetryProviders.map(function (provider) {
|
|
||||||
return provider.subscribe(callback, requests);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Return an unsubscribe function that invokes unsubscribe
|
|
||||||
// for all providers.
|
|
||||||
return function () {
|
|
||||||
unsubscribes.forEach(function (unsubscribe) {
|
|
||||||
if (unsubscribe) {
|
|
||||||
unsubscribe();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
* Request telemetry data.
|
|
||||||
* @param {TelemetryRequest[]} requests and array of
|
|
||||||
* requests to be handled
|
|
||||||
* @returns {Promise} a promise for telemetry data
|
|
||||||
* which may (or may not, depending on
|
|
||||||
* availability) satisfy the requests
|
|
||||||
* @memberof platform/telemetry.TelemetryAggregator#
|
|
||||||
*/
|
|
||||||
requestTelemetry: requestTelemetry,
|
|
||||||
/**
|
|
||||||
* Subscribe to streaming updates to telemetry data.
|
|
||||||
* The provided callback will be invoked as new
|
|
||||||
* telemetry becomes available; as an argument, it
|
|
||||||
* will receive an object of key-value pairs, where
|
|
||||||
* keys are source identifiers and values are objects
|
|
||||||
* of key-value pairs, where keys are point identifiers
|
|
||||||
* and values are TelemetrySeries objects containing
|
|
||||||
* the latest streaming telemetry.
|
|
||||||
* @param {Function} callback the callback to invoke
|
|
||||||
* @param {TelemetryRequest[]} requests an array of
|
|
||||||
* requests to be subscribed upon
|
|
||||||
* @returns {Function} a function which can be called
|
|
||||||
* to unsubscribe
|
|
||||||
* @memberof platform/telemetry.TelemetryAggregator#
|
|
||||||
*/
|
|
||||||
subscribe: subscribe
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Merge the results from many providers into one
|
||||||
|
// result object.
|
||||||
|
function mergeResults(results) {
|
||||||
|
var merged = {};
|
||||||
|
|
||||||
|
results.forEach(function (result) {
|
||||||
|
Object.keys(result).forEach(function (k) {
|
||||||
|
merged[k] = result[k];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
return merged;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Request telemetry from all providers; once they've
|
||||||
|
// responded, merge the results into one result object.
|
||||||
|
TelemetryAggregator.prototype.requestTelemetry = function (requests) {
|
||||||
|
return this.$q.all(this.telemetryProviders.map(function (provider) {
|
||||||
|
return provider.requestTelemetry(requests);
|
||||||
|
})).then(mergeResults);
|
||||||
|
};
|
||||||
|
|
||||||
|
// Subscribe to updates from all providers
|
||||||
|
TelemetryAggregator.prototype.subscribe = function (callback, requests) {
|
||||||
|
var unsubscribes = this.telemetryProviders.map(function (provider) {
|
||||||
|
return provider.subscribe(callback, requests);
|
||||||
|
});
|
||||||
|
|
||||||
|
// Return an unsubscribe function that invokes unsubscribe
|
||||||
|
// for all providers.
|
||||||
|
return function () {
|
||||||
|
unsubscribes.forEach(function (unsubscribe) {
|
||||||
|
if (unsubscribe) {
|
||||||
|
unsubscribe();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
return TelemetryAggregator;
|
return TelemetryAggregator;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
Loading…
Reference in New Issue
Block a user