1 | import { bind, Injector, OpaqueToken } from 'angular2/src/core/di';
|
2 | import { StringMapWrapper } from 'angular2/src/facade/collection';
|
3 | import { PromiseWrapper } from 'angular2/src/facade/async';
|
4 | import { Metric } from '../metric';
|
5 | export class MultiMetric extends Metric {
|
6 | constructor(_metrics) {
|
7 | super();
|
8 | this._metrics = _metrics;
|
9 | }
|
10 | static createBindings(childTokens) {
|
11 | return [
|
12 | bind(_CHILDREN)
|
13 | .toFactory((injector) => childTokens.map(token => injector.get(token)), [Injector]),
|
14 | bind(MultiMetric).toFactory(children => new MultiMetric(children), [_CHILDREN])
|
15 | ];
|
16 | }
|
17 | /**
|
18 | * Starts measuring
|
19 | */
|
20 | beginMeasure() {
|
21 | return PromiseWrapper.all(this._metrics.map(metric => metric.beginMeasure()));
|
22 | }
|
23 | /**
|
24 | * Ends measuring and reports the data
|
25 | * since the begin call.
|
26 | * @param restart: Whether to restart right after this.
|
27 | */
|
28 | endMeasure(restart) {
|
29 | return PromiseWrapper.all(this._metrics.map(metric => metric.endMeasure(restart)))
|
30 | .then(values => mergeStringMaps(values));
|
31 | }
|
32 | /**
|
33 | * Describes the metrics provided by this metric implementation.
|
34 | * (e.g. units, ...)
|
35 | */
|
36 | describe() {
|
37 | return mergeStringMaps(this._metrics.map((metric) => metric.describe()));
|
38 | }
|
39 | }
|
40 | function mergeStringMaps(maps) {
|
41 | var result = {};
|
42 | maps.forEach(map => { StringMapWrapper.forEach(map, (value, prop) => { result[prop] = value; }); });
|
43 | return result;
|
44 | }
|
45 | var _CHILDREN = new OpaqueToken('MultiMetric.children');
|
46 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGlfbWV0cmljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGlmZmluZ19wbHVnaW5fd3JhcHBlci1vdXRwdXRfcGF0aC14QkxJQnJWUi50bXAvYmVuY2hwcmVzcy9zcmMvbWV0cmljL211bHRpX21ldHJpYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiT0FBTyxFQUFDLElBQUksRUFBOEIsUUFBUSxFQUFFLFdBQVcsRUFBQyxNQUFNLHNCQUFzQjtPQUNyRixFQUFDLGdCQUFnQixFQUFDLE1BQU0sZ0NBQWdDO09BQ3hELEVBQUMsY0FBYyxFQUFDLE1BQU0sMkJBQTJCO09BRWpELEVBQUMsTUFBTSxFQUFDLE1BQU0sV0FBVztBQUVoQyxpQ0FBaUMsTUFBTTtJQVVyQyxZQUFvQixRQUFrQjtRQUFJLE9BQU8sQ0FBQztRQUE5QixhQUFRLEdBQVIsUUFBUSxDQUFVO0lBQWEsQ0FBQztJQVRwRCxPQUFPLGNBQWMsQ0FBQyxXQUFrQjtRQUN0QyxNQUFNLENBQUM7WUFDTCxJQUFJLENBQUMsU0FBUyxDQUFDO2lCQUNWLFNBQVMsQ0FBQyxDQUFDLFFBQWtCLEtBQUssV0FBVyxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUNyRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxJQUFJLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUM7U0FDaEYsQ0FBQztJQUNKLENBQUM7SUFJRDs7T0FFRztJQUNILFlBQVk7UUFDVixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFVBQVUsQ0FBQyxPQUFnQjtRQUN6QixNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2FBQzdFLElBQUksQ0FBQyxNQUFNLElBQUksZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVE7UUFDTixNQUFNLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDM0UsQ0FBQztBQUNILENBQUM7QUFFRCx5QkFBeUIsSUFBaUM7SUFDeEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ2hCLElBQUksQ0FBQyxPQUFPLENBQ1IsR0FBRyxNQUFNLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNGLE1BQU0sQ0FBQyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVELElBQUksU0FBUyxHQUFHLElBQUksV0FBVyxDQUFDLHNCQUFzQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2JpbmQsIHByb3ZpZGUsIEJpbmRpbmcsIFByb3ZpZGVyLCBJbmplY3RvciwgT3BhcXVlVG9rZW59IGZyb20gJ2FuZ3VsYXIyL3NyYy9jb3JlL2RpJztcbmltcG9ydCB7U3RyaW5nTWFwV3JhcHBlcn0gZnJvbSAnYW5ndWxhcjIvc3JjL2ZhY2FkZS9jb2xsZWN0aW9uJztcbmltcG9ydCB7UHJvbWlzZVdyYXBwZXJ9IGZyb20gJ2FuZ3VsYXIyL3NyYy9mYWNhZGUvYXN5bmMnO1xuXG5pbXBvcnQge01ldHJpY30gZnJvbSAnLi4vbWV0cmljJztcblxuZXhwb3J0IGNsYXNzIE11bHRpTWV0cmljIGV4dGVuZHMgTWV0cmljIHtcbiAgc3RhdGljIGNyZWF0ZUJpbmRpbmdzKGNoaWxkVG9rZW5zOiBhbnlbXSk6IFByb3ZpZGVyW10ge1xuICAgIHJldHVybiBbXG4gICAgICBiaW5kKF9DSElMRFJFTilcbiAgICAgICAgICAudG9GYWN0b3J5KChpbmplY3RvcjogSW5qZWN0b3IpID0+IGNoaWxkVG9rZW5zLm1hcCh0b2tlbiA9PiBpbmplY3Rvci5nZXQodG9rZW4pKSxcbiAgICAgICAgICAgICAgICAgICAgIFtJbmplY3Rvcl0pLFxuICAgICAgYmluZChNdWx0aU1ldHJpYykudG9GYWN0b3J5KGNoaWxkcmVuID0+IG5ldyBNdWx0aU1ldHJpYyhjaGlsZHJlbiksIFtfQ0hJTERSRU5dKVxuICAgIF07XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9tZXRyaWNzOiBNZXRyaWNbXSkgeyBzdXBlcigpOyB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBtZWFzdXJpbmdcbiAgICovXG4gIGJlZ2luTWVhc3VyZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybiBQcm9taXNlV3JhcHBlci5hbGwodGhpcy5fbWV0cmljcy5tYXAobWV0cmljID0+IG1ldHJpYy5iZWdpbk1lYXN1cmUoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuZHMgbWVhc3VyaW5nIGFuZCByZXBvcnRzIHRoZSBkYXRhXG4gICAqIHNpbmNlIHRoZSBiZWdpbiBjYWxsLlxuICAgKiBAcGFyYW0gcmVzdGFydDogV2hldGhlciB0byByZXN0YXJ0IHJpZ2h0IGFmdGVyIHRoaXMuXG4gICAqL1xuICBlbmRNZWFzdXJlKHJlc3RhcnQ6IGJvb2xlYW4pOiBQcm9taXNlPHtba2V5OiBzdHJpbmddOiBhbnl9PiB7XG4gICAgcmV0dXJuIFByb21pc2VXcmFwcGVyLmFsbCh0aGlzLl9tZXRyaWNzLm1hcChtZXRyaWMgPT4gbWV0cmljLmVuZE1lYXN1cmUocmVzdGFydCkpKVxuICAgICAgICAudGhlbih2YWx1ZXMgPT4gbWVyZ2VTdHJpbmdNYXBzKHZhbHVlcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlcyB0aGUgbWV0cmljcyBwcm92aWRlZCBieSB0aGlzIG1ldHJpYyBpbXBsZW1lbnRhdGlvbi5cbiAgICogKGUuZy4gdW5pdHMsIC4uLilcbiAgICovXG4gIGRlc2NyaWJlKCk6IHtba2V5OiBzdHJpbmddOiBhbnl9IHtcbiAgICByZXR1cm4gbWVyZ2VTdHJpbmdNYXBzKHRoaXMuX21ldHJpY3MubWFwKChtZXRyaWMpID0+IG1ldHJpYy5kZXNjcmliZSgpKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWVyZ2VTdHJpbmdNYXBzKG1hcHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSk6IE9iamVjdCB7XG4gIHZhciByZXN1bHQgPSB7fTtcbiAgbWFwcy5mb3JFYWNoKFxuICAgICAgbWFwID0+IHsgU3RyaW5nTWFwV3JhcHBlci5mb3JFYWNoKG1hcCwgKHZhbHVlLCBwcm9wKSA9PiB7IHJlc3VsdFtwcm9wXSA9IHZhbHVlOyB9KTsgfSk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZhciBfQ0hJTERSRU4gPSBuZXcgT3BhcXVlVG9rZW4oJ011bHRpTWV0cmljLmNoaWxkcmVuJyk7XG4iXX0= |
\ | No newline at end of file |