1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.stream = undefined;
|
7 |
|
8 | var _input = require('./input');
|
9 |
|
10 | var _Rx = require('rxjs/Rx');
|
11 |
|
12 | var _Rx2 = _interopRequireDefault(_Rx);
|
13 |
|
14 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15 |
|
16 | var deviceStreams = new Map();
|
17 | var mergedFilteredStream = new _Rx2.default.Subject();
|
18 | var INPUT_STREAM_DELAY = 500;
|
19 |
|
20 | exports.stream = mergedFilteredStream;
|
21 |
|
22 |
|
23 | _input.stream.subscribe(function (event) {
|
24 | var usedStream = getDeviceStream(event.device);
|
25 | usedStream.next(event.value);
|
26 | });
|
27 |
|
28 | function createDeviceStream(device) {
|
29 | var deviceStream = new _Rx2.default.Subject();
|
30 |
|
31 | deviceStream.distinctUntilChanged().sampleTime(INPUT_STREAM_DELAY).subscribe(function (value) {
|
32 | mergedFilteredStream.next({
|
33 | device: device,
|
34 | value: value
|
35 | });
|
36 | });
|
37 | deviceStreams.set(device, deviceStream);
|
38 | }
|
39 |
|
40 | function getDeviceStream(device) {
|
41 | if (!deviceStreams.has(device)) {
|
42 | createDeviceStream(device);
|
43 | }
|
44 | return deviceStreams.get(device);
|
45 | }
|
46 |
|