Skip to content

Commit b40b124

Browse files
JakeWhartonakarnokd
authored andcommitted
Expose isDisposed method on Disposable. (ReactiveX#4102)
1 parent 7ffed1b commit b40b124

137 files changed

Lines changed: 843 additions & 294 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/main/java/io/reactivex/Observable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ public static Observable<Integer> range(final int start, final int count) {
877877
return create(new ObservableConsumable<Integer>() {
878878
@Override
879879
public void subscribe(Observer<? super Integer> s) {
880-
BooleanDisposable d = new BooleanDisposable();
880+
Disposable d = Disposables.empty();
881881
s.onSubscribe(d);
882882

883883
long end = start - 1L + count;

src/main/java/io/reactivex/Scheduler.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,10 @@ public void dispose() {
193193
disposed = true;
194194
worker.dispose();
195195
}
196-
196+
197+
@Override
198+
public boolean isDisposed() {
199+
return disposed;
200+
}
197201
}
198202
}

src/main/java/io/reactivex/disposables/BooleanDisposable.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,19 +16,19 @@
1616
import io.reactivex.internal.functions.Objects;
1717
import java.util.concurrent.atomic.AtomicReference;
1818

19-
public final class BooleanDisposable implements Disposable {
19+
final class BooleanDisposable implements Disposable {
2020
private static final Runnable EMPTY = new Runnable() {
2121
@Override
2222
public void run() { }
2323
};
2424

2525
private final AtomicReference<Runnable> run;
2626

27-
public BooleanDisposable() {
27+
BooleanDisposable() {
2828
this(EMPTY);
2929
}
3030

31-
public BooleanDisposable(Runnable run) {
31+
BooleanDisposable(Runnable run) {
3232
Objects.requireNonNull(run, "run is null");
3333
this.run = new AtomicReference<Runnable>(run);
3434
}
@@ -43,7 +43,8 @@ public void dispose() {
4343
}
4444
}
4545
}
46-
46+
47+
@Override
4748
public boolean isDisposed() {
4849
return run.get() == null;
4950
}

src/main/java/io/reactivex/disposables/CompositeDisposable.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ public void dispose() {
6565
dispose(set);
6666
}
6767

68+
@Override
6869
public boolean isDisposed() {
6970
return disposed;
7071
}

src/main/java/io/reactivex/disposables/Disposable.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ public interface Disposable {
2020
* Dispose the resource, the operation should be idempotent.
2121
*/
2222
void dispose();
23-
24-
// TODO let's see if we really need this
25-
// boolean isDisposed();
23+
24+
/**
25+
* Returns true if this resource has been disposed.
26+
*/
27+
boolean isDisposed();
2628
}

src/main/java/io/reactivex/disposables/Disposables.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,16 +48,17 @@ public static Disposable from(Future<?> future, boolean allowInterrupt) {
4848

4949
public static Disposable from(final Subscription subscription) {
5050
Objects.requireNonNull(subscription, "subscription is null");
51-
return new Disposable() {
51+
// TODO optimize this case.
52+
return from(new Runnable() {
5253
@Override
53-
public void dispose() {
54+
public void run() {
5455
subscription.cancel();
5556
}
56-
};
57+
});
5758
}
5859

5960
public static Disposable empty() {
60-
return EmptyDisposable.INSTANCE;
61+
return new BooleanDisposable();
6162
}
6263

6364
public static Disposable disposed() {
@@ -88,6 +89,10 @@ public void dispose() {
8889
}
8990
}
9091
}
92+
93+
@Override public boolean isDisposed() {
94+
return get() == DisposedFuture.INSTANCE;
95+
}
9196
}
9297

9398
/** A singleton instance of the disposed future. */

src/main/java/io/reactivex/disposables/RefCountDisposable.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ void release() {
5252
}
5353
}
5454

55+
@Override
5556
public boolean isDisposed() {
5657
return resource.get() == DisposableHelper.DISPOSED;
5758
}
@@ -72,5 +73,10 @@ public void dispose() {
7273
parent.release();
7374
}
7475
}
76+
77+
@Override
78+
public boolean isDisposed() {
79+
return get();
80+
}
7581
}
7682
}

src/main/java/io/reactivex/disposables/SerialDisposable.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public void dispose() {
4545
DisposableHelper.dispose(resource);
4646
}
4747

48+
@Override
4849
public boolean isDisposed() {
4950
return DisposableHelper.isDisposed(get());
5051
}

src/main/java/io/reactivex/flowables/BlockingFlowable.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,11 @@ public void close() {
164164
public void dispose() {
165165
resource.dispose();
166166
}
167+
168+
@Override
169+
public boolean isDisposed() {
170+
return resource.isDisposed();
171+
}
167172
}
168173

169174
public Optional<T> firstOption() {

src/main/java/io/reactivex/internal/disposables/ArrayCompositeResource.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ public void dispose() {
102102
}
103103
}
104104

105+
@Override
105106
public boolean isDisposed() {
106107
return get(0) == DISPOSED;
107108
}

0 commit comments

Comments
 (0)