Refactoring
This commit is contained in:
parent
c2bd4117e4
commit
ce591f9b38
@ -19,18 +19,39 @@ import com.google.common.collect.HashMultimap;
|
|||||||
import com.google.common.collect.ImmutableSet;
|
import com.google.common.collect.ImmutableSet;
|
||||||
import io.netty.bootstrap.Bootstrap;
|
import io.netty.bootstrap.Bootstrap;
|
||||||
import io.netty.buffer.ByteBuf;
|
import io.netty.buffer.ByteBuf;
|
||||||
import io.netty.channel.*;
|
import io.netty.channel.Channel;
|
||||||
|
import io.netty.channel.ChannelFuture;
|
||||||
|
import io.netty.channel.ChannelFutureListener;
|
||||||
|
import io.netty.channel.ChannelInitializer;
|
||||||
|
import io.netty.channel.EventLoopGroup;
|
||||||
import io.netty.channel.nio.NioEventLoopGroup;
|
import io.netty.channel.nio.NioEventLoopGroup;
|
||||||
import io.netty.channel.socket.SocketChannel;
|
import io.netty.channel.socket.SocketChannel;
|
||||||
import io.netty.handler.codec.mqtt.*;
|
import io.netty.handler.codec.mqtt.MqttDecoder;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttEncoder;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttFixedHeader;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttMessage;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttMessageIdVariableHeader;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttMessageType;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttPublishMessage;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttPublishVariableHeader;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttQoS;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttSubscribeMessage;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttSubscribePayload;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttTopicSubscription;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttUnsubscribeMessage;
|
||||||
|
import io.netty.handler.codec.mqtt.MqttUnsubscribePayload;
|
||||||
import io.netty.handler.ssl.SslContext;
|
import io.netty.handler.ssl.SslContext;
|
||||||
import io.netty.handler.timeout.IdleStateHandler;
|
import io.netty.handler.timeout.IdleStateHandler;
|
||||||
import io.netty.util.collection.IntObjectHashMap;
|
|
||||||
import io.netty.util.concurrent.DefaultPromise;
|
import io.netty.util.concurrent.DefaultPromise;
|
||||||
import io.netty.util.concurrent.Future;
|
import io.netty.util.concurrent.Future;
|
||||||
import io.netty.util.concurrent.Promise;
|
import io.netty.util.concurrent.Promise;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.Collections;
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
@ -41,11 +62,11 @@ import java.util.concurrent.atomic.AtomicInteger;
|
|||||||
final class MqttClientImpl implements MqttClient {
|
final class MqttClientImpl implements MqttClient {
|
||||||
|
|
||||||
private final Set<String> serverSubscriptions = new HashSet<>();
|
private final Set<String> serverSubscriptions = new HashSet<>();
|
||||||
private final IntObjectHashMap<MqttPendingUnsubscription> pendingServerUnsubscribes = new IntObjectHashMap<>();
|
private final ConcurrentHashMap<Integer, MqttPendingUnsubscription> pendingServerUnsubscribes = new ConcurrentHashMap<>();
|
||||||
private final IntObjectHashMap<MqttIncomingQos2Publish> qos2PendingIncomingPublishes = new IntObjectHashMap<>();
|
private final ConcurrentHashMap<Integer, MqttIncomingQos2Publish> qos2PendingIncomingPublishes = new ConcurrentHashMap<>();
|
||||||
private final IntObjectHashMap<MqttPendingPublish> pendingPublishes = new IntObjectHashMap<>();
|
private final ConcurrentHashMap<Integer, MqttPendingPublish> pendingPublishes = new ConcurrentHashMap<>();
|
||||||
private final HashMultimap<String, MqttSubscription> subscriptions = HashMultimap.create();
|
private final HashMultimap<String, MqttSubscription> subscriptions = HashMultimap.create();
|
||||||
private final IntObjectHashMap<MqttPendingSubscription> pendingSubscriptions = new IntObjectHashMap<>();
|
private final ConcurrentHashMap<Integer, MqttPendingSubscription> pendingSubscriptions = new ConcurrentHashMap<>();
|
||||||
private final Set<String> pendingSubscribeTopics = new HashSet<>();
|
private final Set<String> pendingSubscribeTopics = new HashSet<>();
|
||||||
private final HashMultimap<MqttHandler, MqttSubscription> handlerToSubscribtion = HashMultimap.create();
|
private final HashMultimap<MqttHandler, MqttSubscription> handlerToSubscribtion = HashMultimap.create();
|
||||||
private final AtomicInteger nextMessageId = new AtomicInteger(1);
|
private final AtomicInteger nextMessageId = new AtomicInteger(1);
|
||||||
@ -355,6 +376,8 @@ final class MqttClientImpl implements MqttClient {
|
|||||||
pendingPublish.getFuture().setSuccess(null); //We don't get an ACK for QOS 0
|
pendingPublish.getFuture().setSuccess(null); //We don't get an ACK for QOS 0
|
||||||
} else if (pendingPublish.isSent()) {
|
} else if (pendingPublish.isSent()) {
|
||||||
pendingPublish.startPublishRetransmissionTimer(this.eventLoop.next(), this::sendAndFlushPacket);
|
pendingPublish.startPublishRetransmissionTimer(this.eventLoop.next(), this::sendAndFlushPacket);
|
||||||
|
} else {
|
||||||
|
this.pendingPublishes.remove(pendingPublish.getMessageId());
|
||||||
}
|
}
|
||||||
return future;
|
return future;
|
||||||
}
|
}
|
||||||
@ -466,7 +489,7 @@ final class MqttClientImpl implements MqttClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
IntObjectHashMap<MqttPendingSubscription> getPendingSubscriptions() {
|
ConcurrentHashMap<Integer, MqttPendingSubscription> getPendingSubscriptions() {
|
||||||
return pendingSubscriptions;
|
return pendingSubscriptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -486,15 +509,15 @@ final class MqttClientImpl implements MqttClient {
|
|||||||
return serverSubscriptions;
|
return serverSubscriptions;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntObjectHashMap<MqttPendingUnsubscription> getPendingServerUnsubscribes() {
|
ConcurrentHashMap<Integer, MqttPendingUnsubscription> getPendingServerUnsubscribes() {
|
||||||
return pendingServerUnsubscribes;
|
return pendingServerUnsubscribes;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntObjectHashMap<MqttPendingPublish> getPendingPublishes() {
|
ConcurrentHashMap<Integer, MqttPendingPublish> getPendingPublishes() {
|
||||||
return pendingPublishes;
|
return pendingPublishes;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntObjectHashMap<MqttIncomingQos2Publish> getQos2PendingIncomingPublishes() {
|
ConcurrentHashMap<Integer, MqttIncomingQos2Publish> getQos2PendingIncomingPublishes() {
|
||||||
return qos2PendingIncomingPublishes;
|
return qos2PendingIncomingPublishes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user