refactoring

pull/2160/head
Nikita Koksharov 6 years ago
parent 008756ec94
commit e150e5dcbc

@ -16,7 +16,6 @@
package org.redisson.spring.data.connection; package org.redisson.spring.data.connection;
import java.nio.ByteBuffer; import java.nio.ByteBuffer;
import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.Set; import java.util.Set;
@ -128,7 +127,7 @@ public class RedissonReactiveSubscription implements ReactiveSubscription {
} }
private final AtomicReference<Flux<Message<ByteBuffer, ByteBuffer>>> flux = new AtomicReference<>(); private final AtomicReference<Flux<Message<ByteBuffer, ByteBuffer>>> flux = new AtomicReference<>();
private Disposable disposable; private volatile Disposable disposable;
@Override @Override
public Flux<Message<ByteBuffer, ByteBuffer>> receive() { public Flux<Message<ByteBuffer, ByteBuffer>> receive() {
@ -138,19 +137,6 @@ public class RedissonReactiveSubscription implements ReactiveSubscription {
Flux<Message<ByteBuffer, ByteBuffer>> f = Flux.<Message<ByteBuffer, ByteBuffer>>create(emitter -> { Flux<Message<ByteBuffer, ByteBuffer>> f = Flux.<Message<ByteBuffer, ByteBuffer>>create(emitter -> {
emitter.onRequest(n -> { emitter.onRequest(n -> {
Map<ByteBuffer, BaseRedisPubSubListener> channelMap = new HashMap<ByteBuffer, BaseRedisPubSubListener>();
Map<ByteBuffer, BaseRedisPubSubListener> patternMap = new HashMap<ByteBuffer, BaseRedisPubSubListener>();
disposable = () -> {
for (Entry<ByteBuffer, BaseRedisPubSubListener> entry : channelMap.entrySet()) {
PubSubConnectionEntry e = channels.get(entry.getKey());
e.removeListener(toChannelName(entry.getKey()), entry.getValue());
}
for (Entry<ByteBuffer, BaseRedisPubSubListener> entry : patternMap.entrySet()) {
PubSubConnectionEntry e = patterns.get(entry.getKey());
e.removeListener(toChannelName(entry.getKey()), entry.getValue());
}
};
AtomicLong counter = new AtomicLong(n); AtomicLong counter = new AtomicLong(n);
BaseRedisPubSubListener listener = new BaseRedisPubSubListener() { BaseRedisPubSubListener listener = new BaseRedisPubSubListener() {
@ -175,25 +161,24 @@ public class RedissonReactiveSubscription implements ReactiveSubscription {
} }
} }
}; };
disposable = () -> {
for (Entry<ByteBuffer, PubSubConnectionEntry> entry : channels.entrySet()) {
entry.getValue().removeListener(toChannelName(entry.getKey()), listener);
}
for (Entry<ByteBuffer, PubSubConnectionEntry> entry : patterns.entrySet()) {
entry.getValue().removeListener(toChannelName(entry.getKey()), listener);
}
};
for (Entry<ByteBuffer, PubSubConnectionEntry> entry : channels.entrySet()) { for (Entry<ByteBuffer, PubSubConnectionEntry> entry : channels.entrySet()) {
channelMap.put(entry.getKey(), listener);
entry.getValue().addListener(toChannelName(entry.getKey()), listener); entry.getValue().addListener(toChannelName(entry.getKey()), listener);
} }
for (Entry<ByteBuffer, PubSubConnectionEntry> entry : patterns.entrySet()) { for (Entry<ByteBuffer, PubSubConnectionEntry> entry : patterns.entrySet()) {
patternMap.put(entry.getKey(), listener);
entry.getValue().addListener(toChannelName(entry.getKey()), listener); entry.getValue().addListener(toChannelName(entry.getKey()), listener);
} }
disposable = () -> {
for (Entry<ByteBuffer, PubSubConnectionEntry> entry : channels.entrySet()) {
entry.getValue().removeListener(toChannelName(entry.getKey()), listener);
}
for (Entry<ByteBuffer, PubSubConnectionEntry> entry : patterns.entrySet()) {
entry.getValue().removeListener(toChannelName(entry.getKey()), listener);
}
};
emitter.onDispose(disposable); emitter.onDispose(disposable);
}); });
}); });

Loading…
Cancel
Save