source: trip-planner-front/node_modules/rxjs/_esm2015/internal/operators/refCount.js@ 6a3a178

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

initial commit

  • Property mode set to 100644
File size: 1.6 KB
Line 
1import { Subscriber } from '../Subscriber';
2export function refCount() {
3 return function refCountOperatorFunction(source) {
4 return source.lift(new RefCountOperator(source));
5 };
6}
7class RefCountOperator {
8 constructor(connectable) {
9 this.connectable = connectable;
10 }
11 call(subscriber, source) {
12 const { connectable } = this;
13 connectable._refCount++;
14 const refCounter = new RefCountSubscriber(subscriber, connectable);
15 const subscription = source.subscribe(refCounter);
16 if (!refCounter.closed) {
17 refCounter.connection = connectable.connect();
18 }
19 return subscription;
20 }
21}
22class RefCountSubscriber extends Subscriber {
23 constructor(destination, connectable) {
24 super(destination);
25 this.connectable = connectable;
26 }
27 _unsubscribe() {
28 const { connectable } = this;
29 if (!connectable) {
30 this.connection = null;
31 return;
32 }
33 this.connectable = null;
34 const refCount = connectable._refCount;
35 if (refCount <= 0) {
36 this.connection = null;
37 return;
38 }
39 connectable._refCount = refCount - 1;
40 if (refCount > 1) {
41 this.connection = null;
42 return;
43 }
44 const { connection } = this;
45 const sharedConnection = connectable._connection;
46 this.connection = null;
47 if (sharedConnection && (!connection || sharedConnection === connection)) {
48 sharedConnection.unsubscribe();
49 }
50 }
51}
52//# sourceMappingURL=refCount.js.map
Note: See TracBrowser for help on using the repository browser.