Buckets:
| import { Subject } from '../Subject'; | |
| import { Subscriber } from '../Subscriber'; | |
| import { Subscription } from '../Subscription'; | |
| import { Scheduler } from '../Scheduler'; | |
| import { TestMessage } from './TestMessage'; | |
| import { SubscriptionLog } from './SubscriptionLog'; | |
| import { SubscriptionLoggable } from './SubscriptionLoggable'; | |
| import { applyMixins } from '../util/applyMixins'; | |
| import { observeNotification } from '../Notification'; | |
| export class HotObservable<T> extends Subject<T> implements SubscriptionLoggable { | |
| public subscriptions: SubscriptionLog[] = []; | |
| scheduler: Scheduler; | |
| // @ts-ignore: Property has no initializer and is not definitely assigned | |
| logSubscribedFrame: () => number; | |
| // @ts-ignore: Property has no initializer and is not definitely assigned | |
| logUnsubscribedFrame: (index: number) => void; | |
| constructor(public messages: TestMessage[], scheduler: Scheduler) { | |
| super(); | |
| this.scheduler = scheduler; | |
| } | |
| /** @internal */ | |
| protected _subscribe(subscriber: Subscriber<any>): Subscription { | |
| const subject: HotObservable<T> = 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; | |
| /* tslint:disable:no-var-keyword */ | |
| for (let i = 0; i < messagesLength; i++) { | |
| (() => { | |
| const { notification, frame } = subject.messages[i]; | |
| /* tslint:enable */ | |
| subject.scheduler.schedule(() => { | |
| observeNotification(notification, subject); | |
| }, frame); | |
| })(); | |
| } | |
| } | |
| } | |
| applyMixins(HotObservable, [SubscriptionLoggable]); | |
Xet Storage Details
- Size:
- 1.85 kB
- Xet hash:
- 76ce172c6cc525d89ee1f233959d86b8ac18265ba2d7db8680d5941d79132fc7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.