source: trip-planner-front/node_modules/rxjs/internal/operators/bufferTime.js@ bdd6491

Last change on this file since bdd6491 was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 6.8 KB
Line 
1"use strict";
2var __extends = (this && this.__extends) || (function () {
3 var extendStatics = function (d, b) {
4 extendStatics = Object.setPrototypeOf ||
5 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6 function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
7 return extendStatics(d, b);
8 }
9 return function (d, b) {
10 extendStatics(d, b);
11 function __() { this.constructor = d; }
12 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13 };
14})();
15Object.defineProperty(exports, "__esModule", { value: true });
16var async_1 = require("../scheduler/async");
17var Subscriber_1 = require("../Subscriber");
18var isScheduler_1 = require("../util/isScheduler");
19function bufferTime(bufferTimeSpan) {
20 var length = arguments.length;
21 var scheduler = async_1.async;
22 if (isScheduler_1.isScheduler(arguments[arguments.length - 1])) {
23 scheduler = arguments[arguments.length - 1];
24 length--;
25 }
26 var bufferCreationInterval = null;
27 if (length >= 2) {
28 bufferCreationInterval = arguments[1];
29 }
30 var maxBufferSize = Number.POSITIVE_INFINITY;
31 if (length >= 3) {
32 maxBufferSize = arguments[2];
33 }
34 return function bufferTimeOperatorFunction(source) {
35 return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));
36 };
37}
38exports.bufferTime = bufferTime;
39var BufferTimeOperator = (function () {
40 function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {
41 this.bufferTimeSpan = bufferTimeSpan;
42 this.bufferCreationInterval = bufferCreationInterval;
43 this.maxBufferSize = maxBufferSize;
44 this.scheduler = scheduler;
45 }
46 BufferTimeOperator.prototype.call = function (subscriber, source) {
47 return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));
48 };
49 return BufferTimeOperator;
50}());
51var Context = (function () {
52 function Context() {
53 this.buffer = [];
54 }
55 return Context;
56}());
57var BufferTimeSubscriber = (function (_super) {
58 __extends(BufferTimeSubscriber, _super);
59 function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {
60 var _this = _super.call(this, destination) || this;
61 _this.bufferTimeSpan = bufferTimeSpan;
62 _this.bufferCreationInterval = bufferCreationInterval;
63 _this.maxBufferSize = maxBufferSize;
64 _this.scheduler = scheduler;
65 _this.contexts = [];
66 var context = _this.openContext();
67 _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;
68 if (_this.timespanOnly) {
69 var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan };
70 _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));
71 }
72 else {
73 var closeState = { subscriber: _this, context: context };
74 var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler };
75 _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));
76 _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));
77 }
78 return _this;
79 }
80 BufferTimeSubscriber.prototype._next = function (value) {
81 var contexts = this.contexts;
82 var len = contexts.length;
83 var filledBufferContext;
84 for (var i = 0; i < len; i++) {
85 var context_1 = contexts[i];
86 var buffer = context_1.buffer;
87 buffer.push(value);
88 if (buffer.length == this.maxBufferSize) {
89 filledBufferContext = context_1;
90 }
91 }
92 if (filledBufferContext) {
93 this.onBufferFull(filledBufferContext);
94 }
95 };
96 BufferTimeSubscriber.prototype._error = function (err) {
97 this.contexts.length = 0;
98 _super.prototype._error.call(this, err);
99 };
100 BufferTimeSubscriber.prototype._complete = function () {
101 var _a = this, contexts = _a.contexts, destination = _a.destination;
102 while (contexts.length > 0) {
103 var context_2 = contexts.shift();
104 destination.next(context_2.buffer);
105 }
106 _super.prototype._complete.call(this);
107 };
108 BufferTimeSubscriber.prototype._unsubscribe = function () {
109 this.contexts = null;
110 };
111 BufferTimeSubscriber.prototype.onBufferFull = function (context) {
112 this.closeContext(context);
113 var closeAction = context.closeAction;
114 closeAction.unsubscribe();
115 this.remove(closeAction);
116 if (!this.closed && this.timespanOnly) {
117 context = this.openContext();
118 var bufferTimeSpan = this.bufferTimeSpan;
119 var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };
120 this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));
121 }
122 };
123 BufferTimeSubscriber.prototype.openContext = function () {
124 var context = new Context();
125 this.contexts.push(context);
126 return context;
127 };
128 BufferTimeSubscriber.prototype.closeContext = function (context) {
129 this.destination.next(context.buffer);
130 var contexts = this.contexts;
131 var spliceIndex = contexts ? contexts.indexOf(context) : -1;
132 if (spliceIndex >= 0) {
133 contexts.splice(contexts.indexOf(context), 1);
134 }
135 };
136 return BufferTimeSubscriber;
137}(Subscriber_1.Subscriber));
138function dispatchBufferTimeSpanOnly(state) {
139 var subscriber = state.subscriber;
140 var prevContext = state.context;
141 if (prevContext) {
142 subscriber.closeContext(prevContext);
143 }
144 if (!subscriber.closed) {
145 state.context = subscriber.openContext();
146 state.context.closeAction = this.schedule(state, state.bufferTimeSpan);
147 }
148}
149function dispatchBufferCreation(state) {
150 var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;
151 var context = subscriber.openContext();
152 var action = this;
153 if (!subscriber.closed) {
154 subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));
155 action.schedule(state, bufferCreationInterval);
156 }
157}
158function dispatchBufferClose(arg) {
159 var subscriber = arg.subscriber, context = arg.context;
160 subscriber.closeContext(context);
161}
162//# sourceMappingURL=bufferTime.js.map
Note: See TracBrowser for help on using the repository browser.