Merge branch 'master' into 3.0.0

pull/1303/head
Nikita 7 years ago
commit 0244e069ae

@ -16,7 +16,6 @@
package org.redisson; package org.redisson;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.net.InetSocketAddress;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
@ -1700,9 +1699,14 @@ public class RedissonMapCache<K, V> extends RedissonMap<K, V> implements RMapCac
if (listener == null) { if (listener == null) {
throw new NullPointerException(); throw new NullPointerException();
} }
RFuture<Map<String, String>> serverFuture = commandExecutor.readAsync((String)null, StringCodec.INSTANCE, RedisCommands.INFO_SERVER);
serverFuture.syncUninterruptibly();
String os = serverFuture.getNow().get("os");
boolean isWindows = os.contains("Windows");
if (listener instanceof EntryRemovedListener) { if (listener instanceof EntryRemovedListener) {
RTopic<List<Object>> topic = redisson.getTopic(getRemovedChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> topic = redisson.getTopic(getRemovedChannelName(), new MapCacheEventCodec(codec, isWindows));
return topic.addListener(new MessageListener<List<Object>>() { return topic.addListener(new MessageListener<List<Object>>() {
@Override @Override
public void onMessage(String channel, List<Object> msg) { public void onMessage(String channel, List<Object> msg) {
@ -1713,7 +1717,7 @@ public class RedissonMapCache<K, V> extends RedissonMap<K, V> implements RMapCac
} }
if (listener instanceof EntryCreatedListener) { if (listener instanceof EntryCreatedListener) {
RTopic<List<Object>> topic = redisson.getTopic(getCreatedChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> topic = redisson.getTopic(getCreatedChannelName(), new MapCacheEventCodec(codec, isWindows));
return topic.addListener(new MessageListener<List<Object>>() { return topic.addListener(new MessageListener<List<Object>>() {
@Override @Override
public void onMessage(String channel, List<Object> msg) { public void onMessage(String channel, List<Object> msg) {
@ -1724,7 +1728,7 @@ public class RedissonMapCache<K, V> extends RedissonMap<K, V> implements RMapCac
} }
if (listener instanceof EntryUpdatedListener) { if (listener instanceof EntryUpdatedListener) {
RTopic<List<Object>> topic = redisson.getTopic(getUpdatedChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> topic = redisson.getTopic(getUpdatedChannelName(), new MapCacheEventCodec(codec, isWindows));
return topic.addListener(new MessageListener<List<Object>>() { return topic.addListener(new MessageListener<List<Object>>() {
@Override @Override
public void onMessage(String channel, List<Object> msg) { public void onMessage(String channel, List<Object> msg) {
@ -1735,7 +1739,7 @@ public class RedissonMapCache<K, V> extends RedissonMap<K, V> implements RMapCac
} }
if (listener instanceof EntryExpiredListener) { if (listener instanceof EntryExpiredListener) {
RTopic<List<Object>> topic = redisson.getTopic(getExpiredChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> topic = redisson.getTopic(getExpiredChannelName(), new MapCacheEventCodec(codec, isWindows));
return topic.addListener(new MessageListener<List<Object>>() { return topic.addListener(new MessageListener<List<Object>>() {
@Override @Override
public void onMessage(String channel, List<Object> msg) { public void onMessage(String channel, List<Object> msg) {
@ -1750,16 +1754,16 @@ public class RedissonMapCache<K, V> extends RedissonMap<K, V> implements RMapCac
@Override @Override
public void removeListener(int listenerId) { public void removeListener(int listenerId) {
RTopic<List<Object>> removedTopic = redisson.getTopic(getRemovedChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> removedTopic = redisson.getTopic(getRemovedChannelName());
removedTopic.removeListener(listenerId); removedTopic.removeListener(listenerId);
RTopic<List<Object>> createdTopic = redisson.getTopic(getCreatedChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> createdTopic = redisson.getTopic(getCreatedChannelName());
createdTopic.removeListener(listenerId); createdTopic.removeListener(listenerId);
RTopic<List<Object>> updatedTopic = redisson.getTopic(getUpdatedChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> updatedTopic = redisson.getTopic(getUpdatedChannelName());
updatedTopic.removeListener(listenerId); updatedTopic.removeListener(listenerId);
RTopic<List<Object>> expiredTopic = redisson.getTopic(getExpiredChannelName(), new MapCacheEventCodec(codec)); RTopic<List<Object>> expiredTopic = redisson.getTopic(getExpiredChannelName());
expiredTopic.removeListener(listenerId); expiredTopic.removeListener(listenerId);
} }

@ -25,7 +25,6 @@ import org.redisson.client.protocol.Decoder;
import org.redisson.client.protocol.Encoder; import org.redisson.client.protocol.Encoder;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import io.netty.util.internal.PlatformDependent;
/** /**
* *
@ -35,6 +34,7 @@ import io.netty.util.internal.PlatformDependent;
public class MapCacheEventCodec implements Codec { public class MapCacheEventCodec implements Codec {
private final Codec codec; private final Codec codec;
private final boolean isWindows;
private final Decoder<Object> decoder = new Decoder<Object>() { private final Decoder<Object> decoder = new Decoder<Object>() {
@Override @Override
@ -56,9 +56,10 @@ public class MapCacheEventCodec implements Codec {
} }
}; };
public MapCacheEventCodec(Codec codec) { public MapCacheEventCodec(Codec codec, boolean isWindows) {
super(); super();
this.codec = codec; this.codec = codec;
this.isWindows = isWindows;
} }
@Override @Override
@ -93,7 +94,7 @@ public class MapCacheEventCodec implements Codec {
private Object decode(ByteBuf buf, State state, Decoder<?> decoder) throws IOException { private Object decode(ByteBuf buf, State state, Decoder<?> decoder) throws IOException {
int keyLen; int keyLen;
if (PlatformDependent.isWindows()) { if (isWindows) {
keyLen = buf.readIntLE(); keyLen = buf.readIntLE();
} else { } else {
keyLen = (int) buf.readLongLE(); keyLen = (int) buf.readLongLE();

Loading…
Cancel
Save