| import { Subject } from '../Subject'; |
| import { Subscription } from '../Subscription'; |
| import { SubscriptionLoggable } from './SubscriptionLoggable'; |
| import { applyMixins } from '../util/applyMixins'; |
| export class HotObservable extends Subject { |
| constructor(messages, scheduler) { |
| super(); |
| this.messages = messages; |
| this.subscriptions = []; |
| this.scheduler = scheduler; |
| } |
| _subscribe(subscriber) { |
| const subject = this; |
| const index = subject.logSubscribedFrame(); |
| const subscription = new Subscription(); |
| subscription.add(new Subscription(() => { |
| subject.logUnsubscribedFrame(index); |
| })); |
| subscription.add(super._subscribe(subscriber)); |
| return subscription; |
| } |
| setup() { |
| const subject = this; |
| const messagesLength = subject.messages.length; |
| for (var i = 0; i < messagesLength; i++) { |
| (() => { |
| var message = subject.messages[i]; |
| subject.scheduler.schedule(() => { message.notification.observe(subject); }, message.frame); |
| })(); |
| } |
| } |
| } |
| applyMixins(HotObservable, [SubscriptionLoggable]); |
| //# sourceMappingURL=HotObservable.js.map |