|
|
@@ -1,834 +0,0 @@
|
|
|
-package org.jetlinks.community.network.mqtt.server;
|
|
|
-
|
|
|
-
|
|
|
-import io.netty.handler.codec.mqtt.MqttConnectReturnCode;
|
|
|
-import io.netty.handler.codec.mqtt.MqttQoS;
|
|
|
-import io.vertx.core.AsyncResult;
|
|
|
-import io.vertx.core.Handler;
|
|
|
-import io.vertx.core.buffer.Buffer;
|
|
|
-import io.vertx.core.net.SocketAddress;
|
|
|
-import io.vertx.mqtt.MqttAuth;
|
|
|
-import io.vertx.mqtt.MqttEndpoint;
|
|
|
-import io.vertx.mqtt.MqttWill;
|
|
|
-import io.vertx.mqtt.messages.MqttPublishMessage;
|
|
|
-import io.vertx.mqtt.messages.MqttSubscribeMessage;
|
|
|
-import io.vertx.mqtt.messages.MqttUnsubscribeMessage;
|
|
|
-import lombok.Data;
|
|
|
-import lombok.EqualsAndHashCode;
|
|
|
-
|
|
|
-import javax.net.ssl.SSLSession;
|
|
|
-import java.util.*;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author lifang
|
|
|
- * @version 1.0.0
|
|
|
- * @ClassName TopicHelper.java
|
|
|
- * @Description TODO
|
|
|
- * @createTime 2021年07月07日 16:35:00
|
|
|
- */
|
|
|
-public class TopicHelper {
|
|
|
- private static final String ENDPOINTS="endpoints";
|
|
|
- private static final String CHILDREN="childrenNode";
|
|
|
-
|
|
|
-
|
|
|
- private static final Tree<MqttEndpoint> ROOT =new Tree<>();
|
|
|
- //添加订阅主题
|
|
|
- public static void addTopic(String topic,MqttEndpoint endpoint){
|
|
|
- if(topic.startsWith("/")){
|
|
|
- topic=topic.substring(1);
|
|
|
- }
|
|
|
- String[] subTopics = topic.split("/");
|
|
|
- addTopic(ROOT,subTopics,0,endpoint);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 删除相关主题下订阅通道
|
|
|
- * @param topic
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static Set<MqttEndpoint> deleteNodeEndPoint(String topic,MqttEndpoint endpoint){
|
|
|
- if(topic.startsWith("/")){
|
|
|
- topic=topic.substring(1);
|
|
|
- }
|
|
|
- String[] subTopics = topic.split("/");
|
|
|
- Set<Tree<MqttEndpoint>> mqttEndpoints = new HashSet<>();
|
|
|
- findMatchNodes(ROOT,subTopics,0,mqttEndpoints);
|
|
|
- Set<MqttEndpoint> result = new HashSet<>();
|
|
|
- mqttEndpoints.stream().filter(mqttEndpointTree -> mqttEndpointTree.get(ENDPOINTS)!=null)
|
|
|
- .forEach(mqttEndpointTree -> result.addAll((Collection<? extends MqttEndpoint>) mqttEndpointTree.get(ENDPOINTS)));
|
|
|
- return result;
|
|
|
- }
|
|
|
- /**
|
|
|
- * 找到符合发布主题的所有订阅主题
|
|
|
- * @param topic
|
|
|
- * @return
|
|
|
- */
|
|
|
- public static Set<MqttEndpoint> findMatchNodes(String topic){
|
|
|
- if(topic.startsWith("/")){
|
|
|
- topic=topic.substring(1);
|
|
|
- }
|
|
|
- String[] subTopics = topic.split("/");
|
|
|
- Set<Tree<MqttEndpoint>> mqttEndpoints = new HashSet<>();
|
|
|
- findMatchNodes(ROOT,subTopics,0,mqttEndpoints);
|
|
|
- Set<MqttEndpoint> result = new HashSet<>();
|
|
|
- mqttEndpoints.stream().filter(mqttEndpointTree -> mqttEndpointTree.get(ENDPOINTS)!=null)
|
|
|
- .forEach(mqttEndpointTree -> result.addAll((Collection<? extends MqttEndpoint>) mqttEndpointTree.get(ENDPOINTS)));
|
|
|
- return result;
|
|
|
- }
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- private static synchronized void addTopic(Tree<MqttEndpoint> node,String[] topics,int pos,MqttEndpoint endpoint){
|
|
|
- if(pos==topics.length){
|
|
|
- //当到达最后的节点时
|
|
|
- return;
|
|
|
- }
|
|
|
- String topic = topics[pos];
|
|
|
- Set<Tree<MqttEndpoint>> children =
|
|
|
- (Set<Tree<MqttEndpoint>>) Optional.ofNullable(node.get(CHILDREN)).orElse(new HashSet<>());
|
|
|
- Tree<MqttEndpoint> eqTopic=Optional.ofNullable(findNode(children,topic)).
|
|
|
- orElse(new Tree<>());
|
|
|
- if(eqTopic.getParent()==null){
|
|
|
- eqTopic.setParent(node);
|
|
|
- eqTopic.setName(topic);
|
|
|
- }
|
|
|
- children.add(eqTopic);
|
|
|
- if(pos==topics.length-1){
|
|
|
- Set<MqttEndpoint> endpointSet = (Set<MqttEndpoint>) Optional.ofNullable(eqTopic.get(ENDPOINTS))
|
|
|
- .orElse(new HashSet<>());
|
|
|
- endpointSet.add(endpoint);
|
|
|
- eqTopic.put(ENDPOINTS,endpointSet);
|
|
|
- }
|
|
|
- node.put(CHILDREN,children);
|
|
|
- addTopic(eqTopic,topics,++pos,endpoint);
|
|
|
- }
|
|
|
-
|
|
|
- @SuppressWarnings("unchecked")
|
|
|
- private static Set<Tree<MqttEndpoint>> findMatchNodes(Tree<MqttEndpoint> root,String[] topics,int pos,Set<Tree<MqttEndpoint>> result){
|
|
|
- Set<Tree<MqttEndpoint>> children = Optional.ofNullable((Set<Tree<MqttEndpoint>>) Optional.ofNullable(root)
|
|
|
- .orElse(new Tree<>()).get(CHILDREN)).orElse(new HashSet<>());
|
|
|
- if(pos==topics.length){
|
|
|
- //当到达最后的节点时
|
|
|
- return children;
|
|
|
- }
|
|
|
- String topic = topics[pos];
|
|
|
- for (Tree<MqttEndpoint> child : children) {
|
|
|
- if(child.getName().equals("#")){
|
|
|
- result.add(child);
|
|
|
- }else if(child.getName().equals("+")||child.getName().equals(topic)){
|
|
|
- if(pos==topics.length-1){
|
|
|
- result.add(child);
|
|
|
- }
|
|
|
- findMatchNodes(child,topics,pos+1,result);
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- return children;
|
|
|
- }
|
|
|
-
|
|
|
- private static Tree<MqttEndpoint> findNode(Set<Tree<MqttEndpoint>> children,String name){
|
|
|
- for (Tree<MqttEndpoint> child : children) {
|
|
|
- if(child.getName().equals(name)){
|
|
|
- return child;
|
|
|
- }
|
|
|
- }
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Data
|
|
|
- @EqualsAndHashCode(of = {"name","parent"},callSuper = false)
|
|
|
- static class Tree<T> extends LinkedHashMap<String, Object> {
|
|
|
- private String id;
|
|
|
- private String name;
|
|
|
- private Tree<T> parent;
|
|
|
- }
|
|
|
-
|
|
|
- public static void main(String[] args) {
|
|
|
- String[] subTopics = "tuoren/+/ceshi/+".split("/");
|
|
|
- String[] subTopics2 = "tuoren/+/ceshi/#".split("/");
|
|
|
- String[] subTopics3 = "tuoren/+/+/#".split("/");
|
|
|
- addTopic(ROOT, subTopics, 0, new MqttEndpoint() {
|
|
|
- @Override
|
|
|
- public void close() {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SocketAddress remoteAddress() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SocketAddress localAddress() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isSsl() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SSLSession sslSession() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String clientIdentifier() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttAuth auth() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttWill will() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int protocolVersion() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String protocolName() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isCleanSession() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int keepAliveTimeSeconds() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int lastMessageId() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void subscriptionAutoAck(boolean b) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isSubscriptionAutoAck() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAutoAck(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isPublishAutoAck() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint autoKeepAlive(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isAutoKeepAlive() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isConnected() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint setClientIdentifier(String s) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint disconnectHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint subscribeHandler(Handler<MqttSubscribeMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint unsubscribeHandler(Handler<MqttUnsubscribeMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishHandler(Handler<MqttPublishMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAcknowledgeHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReceivedHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReleaseHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishCompletionHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint pingHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint closeHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint exceptionHandler(Handler<Throwable> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint accept() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint accept(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint reject(MqttConnectReturnCode mqttConnectReturnCode) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint subscribeAcknowledge(int i, List<MqttQoS> list) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint unsubscribeAcknowledge(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAcknowledge(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReceived(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishRelease(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishComplete(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1, Handler<AsyncResult<Integer>> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1, int i, Handler<AsyncResult<Integer>> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint pong() {
|
|
|
- return null;
|
|
|
- }
|
|
|
- });
|
|
|
- addTopic(ROOT, subTopics2, 0, new MqttEndpoint() {
|
|
|
- @Override
|
|
|
- public void close() {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SocketAddress remoteAddress() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SocketAddress localAddress() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isSsl() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SSLSession sslSession() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String clientIdentifier() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttAuth auth() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttWill will() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int protocolVersion() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String protocolName() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isCleanSession() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int keepAliveTimeSeconds() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int lastMessageId() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void subscriptionAutoAck(boolean b) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isSubscriptionAutoAck() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAutoAck(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isPublishAutoAck() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint autoKeepAlive(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isAutoKeepAlive() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isConnected() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint setClientIdentifier(String s) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint disconnectHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint subscribeHandler(Handler<MqttSubscribeMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint unsubscribeHandler(Handler<MqttUnsubscribeMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishHandler(Handler<MqttPublishMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAcknowledgeHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReceivedHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReleaseHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishCompletionHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint pingHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint closeHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint exceptionHandler(Handler<Throwable> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint accept() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint accept(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint reject(MqttConnectReturnCode mqttConnectReturnCode) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint subscribeAcknowledge(int i, List<MqttQoS> list) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint unsubscribeAcknowledge(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAcknowledge(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReceived(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishRelease(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishComplete(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1, Handler<AsyncResult<Integer>> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1, int i, Handler<AsyncResult<Integer>> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint pong() {
|
|
|
- return null;
|
|
|
- }
|
|
|
- });
|
|
|
- addTopic(ROOT, subTopics3, 0, new MqttEndpoint() {
|
|
|
- @Override
|
|
|
- public void close() {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SocketAddress remoteAddress() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SocketAddress localAddress() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isSsl() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public SSLSession sslSession() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String clientIdentifier() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttAuth auth() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttWill will() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int protocolVersion() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public String protocolName() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isCleanSession() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int keepAliveTimeSeconds() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public int lastMessageId() {
|
|
|
- return 0;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public void subscriptionAutoAck(boolean b) {
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isSubscriptionAutoAck() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAutoAck(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isPublishAutoAck() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint autoKeepAlive(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isAutoKeepAlive() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public boolean isConnected() {
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint setClientIdentifier(String s) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint disconnectHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint subscribeHandler(Handler<MqttSubscribeMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint unsubscribeHandler(Handler<MqttUnsubscribeMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishHandler(Handler<MqttPublishMessage> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAcknowledgeHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReceivedHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReleaseHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishCompletionHandler(Handler<Integer> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint pingHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint closeHandler(Handler<Void> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint exceptionHandler(Handler<Throwable> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint accept() {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint accept(boolean b) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint reject(MqttConnectReturnCode mqttConnectReturnCode) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint subscribeAcknowledge(int i, List<MqttQoS> list) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint unsubscribeAcknowledge(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishAcknowledge(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishReceived(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishRelease(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publishComplete(int i) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1, Handler<AsyncResult<Integer>> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint publish(String s, Buffer buffer, MqttQoS mqttQoS, boolean b, boolean b1, int i, Handler<AsyncResult<Integer>> handler) {
|
|
|
- return null;
|
|
|
- }
|
|
|
-
|
|
|
- @Override
|
|
|
- public MqttEndpoint pong() {
|
|
|
- return null;
|
|
|
- }
|
|
|
- });
|
|
|
- Set<Tree<MqttEndpoint>> objects = new HashSet<>();
|
|
|
- long l = System.currentTimeMillis();
|
|
|
- String[] publish = "tuoren/123/ceshi/123".split("/");
|
|
|
- findMatchNodes(ROOT,publish,0,objects);
|
|
|
- System.out.println(System.currentTimeMillis()-l);
|
|
|
- }
|
|
|
-
|
|
|
-}
|
|
|
-
|