Skip to content

Commit fae04e6

Browse files
committed
Fix memory leaks (clear subscriptions)
1 parent 3c10dc4 commit fae04e6

File tree

3 files changed

+6
-6
lines changed

3 files changed

+6
-6
lines changed

lib/src/main/java/ua/naiksoftware/stomp/OkHttpConnectionProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@
4646
@Override
4747
public Flowable<String> messages() {
4848
Flowable<String> flowable = Flowable.<String>create(mMessagesEmitters::add, BackpressureStrategy.BUFFER)
49-
.doOnCancel(() -> {
49+
.doFinally(() -> {
5050
Iterator<FlowableEmitter<? super String>> iterator = mMessagesEmitters.iterator();
5151
while (iterator.hasNext()) {
5252
if (iterator.next().isCancelled()) iterator.remove();
@@ -131,7 +131,7 @@ public Flowable<Void> send(String stompMessage) {
131131
@Override
132132
public Flowable<LifecycleEvent> getLifecycleReceiver() {
133133
return Flowable.<LifecycleEvent>create(mLifecycleEmitters::add, BackpressureStrategy.BUFFER)
134-
.doOnCancel(() -> {
134+
.doFinally(() -> {
135135
synchronized (mLifecycleEmitters) {
136136
Iterator<FlowableEmitter<? super LifecycleEvent>> iterator = mLifecycleEmitters.iterator();
137137
while (iterator.hasNext()) {

lib/src/main/java/ua/naiksoftware/stomp/WebSocketsConnectionProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
@Override
5959
public Flowable<String> messages() {
6060
Flowable<String> flowable = Flowable.<String>create(mMessagesEmitters::add, BackpressureStrategy.BUFFER)
61-
.doOnCancel(() -> {
61+
.doFinally(() -> {
6262
Iterator<FlowableEmitter<? super String>> iterator = mMessagesEmitters.iterator();
6363
while (iterator.hasNext()) {
6464
if (iterator.next().isCancelled()) iterator.remove();
@@ -165,7 +165,7 @@ private void emitMessage(String stompMessage) {
165165
@Override
166166
public Flowable<LifecycleEvent> getLifecycleReceiver() {
167167
return Flowable.<LifecycleEvent>create(mLifecycleEmitters::add, BackpressureStrategy.BUFFER)
168-
.doOnCancel(() -> {
168+
.doFinally(() -> {
169169
synchronized (mLifecycleLock) {
170170
Iterator<FlowableEmitter<? super LifecycleEvent>> iterator = mLifecycleEmitters.iterator();
171171
while (iterator.hasNext()) {

lib/src/main/java/ua/naiksoftware/stomp/client/StompClient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class StompClient {
3535

3636
private Disposable mMessagesDisposable;
3737
private Disposable mLifecycleDisposable;
38-
private Map<String, Set<FlowableEmitter<? super StompMessage>>> mEmitters = Collections.synchronizedMap(new HashMap<>());
38+
private final Map<String, Set<FlowableEmitter<? super StompMessage>>> mEmitters = Collections.synchronizedMap(new HashMap<>());
3939
private List<ConnectableFlowable<Void>> mWaitConnectionFlowables;
4040
private final ConnectionProvider mConnectionProvider;
4141
private HashMap<String, String> mTopics;
@@ -179,7 +179,7 @@ public Flowable<StompMessage> topic(String destinationPath, List<StompHeader> he
179179
emittersSet.add(emitter);
180180
}
181181
}, BackpressureStrategy.BUFFER)
182-
.doOnCancel(() -> {
182+
.doFinally(() -> {
183183
synchronized (mEmitters) {
184184
Iterator<String> mapIterator = mEmitters.keySet().iterator();
185185
while (mapIterator.hasNext()) {

0 commit comments

Comments
 (0)