This is an automated email from the ASF dual-hosted git repository.

xiaoyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-shenyu.git


The following commit(s) were added to refs/heads/master by this push:
     new be37737  feat mqtt protocol (#2351)
be37737 is described below

commit be377377e1dd2da90e064f63ced4243ff45c5711
Author: Sinsy <[email protected]>
AuthorDate: Mon Nov 15 14:40:08 2021 +0800

    feat mqtt protocol (#2351)
---
 shenyu-protocol/pom.xml                            |   1 +
 shenyu-protocol/{ => shenyu-protocol-mqtt}/pom.xml |  20 ++--
 .../shenyu/protocol/mqtt/AbstractMessageType.java  | 114 +++++++++++++++++++++
 .../shenyu/protocol/mqtt/BootstrapServer.java      |  40 ++++++++
 .../org/apache/shenyu/protocol/mqtt/Connect.java   |  31 ++++++
 .../apache/shenyu/protocol/mqtt/MessageType.java   |  24 +++++
 .../shenyu/protocol/mqtt/MqttBootstrapServer.java  |  39 +++++++
 .../org/apache/shenyu/protocol/mqtt/MqttEnv.java   |  32 ++++++
 .../apache/shenyu/protocol/mqtt/MqttFactory.java   |  76 ++++++++++++++
 .../org/apache/shenyu/protocol/mqtt/PubAck.java    |  31 ++++++
 .../org/apache/shenyu/protocol/mqtt/Publish.java   |  32 ++++++
 .../org/apache/shenyu/protocol/mqtt/Subscribe.java |  32 ++++++
 .../apache/shenyu/protocol/mqtt/Unsubscribe.java   |  32 ++++++
 13 files changed, 497 insertions(+), 7 deletions(-)

diff --git a/shenyu-protocol/pom.xml b/shenyu-protocol/pom.xml
index 61f720e..1677bde 100644
--- a/shenyu-protocol/pom.xml
+++ b/shenyu-protocol/pom.xml
@@ -28,5 +28,6 @@
 
     <modules>
         <module>shenyu-protocol-grpc</module>
+        <module>shenyu-protocol-mqtt</module>
     </modules>
 </project>
\ No newline at end of file
diff --git a/shenyu-protocol/pom.xml 
b/shenyu-protocol/shenyu-protocol-mqtt/pom.xml
similarity index 66%
copy from shenyu-protocol/pom.xml
copy to shenyu-protocol/shenyu-protocol-mqtt/pom.xml
index 61f720e..b35edc1 100644
--- a/shenyu-protocol/pom.xml
+++ b/shenyu-protocol/shenyu-protocol-mqtt/pom.xml
@@ -16,17 +16,23 @@
   ~ limitations under the License.
   -->
 
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+<project xmlns="http://maven.apache.org/POM/4.0.0";
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
     <parent>
+        <artifactId>shenyu-protocol</artifactId>
         <groupId>org.apache.shenyu</groupId>
-        <artifactId>shenyu</artifactId>
         <version>2.4.2-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
-    <artifactId>shenyu-protocol</artifactId>
-    <packaging>pom</packaging>
 
-    <modules>
-        <module>shenyu-protocol-grpc</module>
-    </modules>
+    <artifactId>shenyu-protocol-mqtt</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>io.netty</groupId>
+            <artifactId>netty-all</artifactId>
+        </dependency>
+    </dependencies>
+
 </project>
\ No newline at end of file
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/AbstractMessageType.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/AbstractMessageType.java
new file mode 100644
index 0000000..9b93881
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/AbstractMessageType.java
@@ -0,0 +1,114 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.mqtt.MqttPublishMessage;
+import io.netty.handler.codec.mqtt.MqttSubscribeMessage;
+import io.netty.handler.codec.mqtt.MqttUnsubscribeMessage;
+
+/**
+ * Command messages.
+ */
+public abstract class AbstractMessageType {
+
+    private volatile boolean connected;
+
+    /**
+     * Client request to connect to Server.
+     * @param ctx ChannelHandlerContext
+     */
+    public void connect(final ChannelHandlerContext ctx) {
+
+    }
+
+    /**
+     * Publish message.
+     * @param ctx ctx
+     * @param msg msg
+     */
+    public void publish(final ChannelHandlerContext ctx, final 
MqttPublishMessage msg) {
+
+    }
+
+    /**
+     * Publish Acknowledgment.
+     * @param ctx ctx
+     */
+    public void pubAck(final ChannelHandlerContext ctx) {
+
+    }
+
+    /**
+     * Client Subscribe request.
+     * @param ctx ctx
+     * @param msg msg
+     */
+    public void subscribe(final ChannelHandlerContext ctx, final 
MqttSubscribeMessage msg) {
+
+    }
+
+    /**
+     * Client Unsubscribe request.
+     * @param ctx ctx
+     * @param msg msg
+     */
+    public void unsubscribe(final ChannelHandlerContext ctx, final 
MqttUnsubscribeMessage msg) {
+
+    }
+
+    /**
+     * PING Request.
+     * @param ctx ctx
+     */
+    public void pingReq(final ChannelHandlerContext ctx) {
+
+    }
+
+    /**
+     * PING Response.
+     * @param ctx ctx
+     */
+    public void pingResp(final ChannelHandlerContext ctx) {
+
+    }
+
+    /**
+     * Client is Disconnecting.
+     * @param ctx ctx
+     */
+    public void disconnect(final ChannelHandlerContext ctx) {
+
+    }
+
+    /**
+     * isConnected.
+     * @return connected
+     */
+    public boolean isConnected() {
+        return connected;
+    }
+
+    /**
+     * set connected.
+     * @param connected connected
+     */
+    public void setConnected(final boolean connected) {
+        this.connected = connected;
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/BootstrapServer.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/BootstrapServer.java
new file mode 100644
index 0000000..8edaebf
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/BootstrapServer.java
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+/**
+ * mqtt life cycle.
+ */
+public interface BootstrapServer {
+
+    /**
+     * init.
+     */
+    void init();
+
+    /**
+     * start.
+     */
+    void start();
+
+    /**
+     * shutdown.
+     */
+    void shutdown();
+
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Connect.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Connect.java
new file mode 100644
index 0000000..ff84d75
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Connect.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+
+/**
+ * Client requests a connection to a server.
+ */
+public class Connect extends MessageType {
+
+    @Override
+    public void connect(final ChannelHandlerContext ctx) {
+
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MessageType.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MessageType.java
new file mode 100644
index 0000000..f31cfbc
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MessageType.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+/**
+ * Command messages.
+ */
+public class MessageType extends AbstractMessageType {
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttBootstrapServer.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttBootstrapServer.java
new file mode 100644
index 0000000..92601aa
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttBootstrapServer.java
@@ -0,0 +1,39 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+/**
+ * mqtt server.
+ */
+public class MqttBootstrapServer implements BootstrapServer {
+
+    @Override
+    public void init() {
+
+    }
+
+    @Override
+    public void start() {
+
+    }
+
+    @Override
+    public void shutdown() {
+
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttEnv.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttEnv.java
new file mode 100644
index 0000000..f065c1a
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttEnv.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+/**
+ * mqtt env.
+ */
+public class MqttEnv {
+
+    private int port;
+
+    private int bossGroupThreadCount;
+
+    private int maxPayloadSize;
+
+    private int workerGroupThreadCount;
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttFactory.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttFactory.java
new file mode 100644
index 0000000..71e2f17
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/MqttFactory.java
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.mqtt.MqttMessage;
+import io.netty.handler.codec.mqtt.MqttPublishMessage;
+import io.netty.handler.codec.mqtt.MqttSubscribeMessage;
+import io.netty.handler.codec.mqtt.MqttUnsubscribeMessage;
+
+/**
+ * mqtt factory.
+ */
+public class MqttFactory {
+
+    private final MessageType messageType = new MessageType();
+
+    private final MqttMessage msg;
+
+    private final ChannelHandlerContext ctx;
+
+    public MqttFactory(final MqttMessage msg, final ChannelHandlerContext ctx) 
{
+        this.msg = msg;
+        this.ctx = ctx;
+    }
+
+    /**
+     * connect.
+     */
+    public void connect() {
+
+        if (msg.fixedHeader() == null) {
+            return;
+        }
+        switch (msg.fixedHeader().messageType()) {
+
+            case CONNECT:
+                messageType.connect(ctx);
+                break;
+
+            case PUBLISH:
+                messageType.publish(ctx, (MqttPublishMessage) msg);
+                break;
+            case PUBACK:
+                break;
+            case SUBSCRIBE:
+                messageType.subscribe(ctx, (MqttSubscribeMessage) msg);
+                break;
+            case UNSUBSCRIBE:
+                messageType.unsubscribe(ctx, (MqttUnsubscribeMessage) msg);
+                break;
+            case PINGREQ:
+                messageType.pingReq(ctx);
+                break;
+            case DISCONNECT:
+                break;
+            default:
+                break;
+        }
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/PubAck.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/PubAck.java
new file mode 100644
index 0000000..38f3f46
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/PubAck.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+
+/**
+ * Publish acknowledgment.
+ */
+public class PubAck extends MessageType {
+
+    @Override
+    public void pubAck(final ChannelHandlerContext ctx) {
+
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Publish.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Publish.java
new file mode 100644
index 0000000..07bd334
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Publish.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.mqtt.MqttPublishMessage;
+
+/**
+ * Publish message.
+ */
+public class Publish extends MessageType {
+
+    @Override
+    public void publish(final ChannelHandlerContext ctx, final 
MqttPublishMessage msg) {
+
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Subscribe.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Subscribe.java
new file mode 100644
index 0000000..188d17c
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Subscribe.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.mqtt.MqttSubscribeMessage;
+
+/**
+ *  Subscribe to named topics.
+ */
+public class Subscribe extends MessageType {
+
+    @Override
+    public void subscribe(final ChannelHandlerContext ctx, final 
MqttSubscribeMessage msg) {
+
+    }
+}
diff --git 
a/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Unsubscribe.java
 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Unsubscribe.java
new file mode 100644
index 0000000..777ac3e
--- /dev/null
+++ 
b/shenyu-protocol/shenyu-protocol-mqtt/src/main/java/org/apache/shenyu/protocol/mqtt/Unsubscribe.java
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.shenyu.protocol.mqtt;
+
+import io.netty.channel.ChannelHandlerContext;
+import io.netty.handler.codec.mqtt.MqttUnsubscribeMessage;
+
+/**
+ * Unsubscribe from named topics.
+ */
+public class Unsubscribe extends MessageType {
+
+    @Override
+    public void unsubscribe(final ChannelHandlerContext ctx, final 
MqttUnsubscribeMessage msg) {
+
+    }
+}

Reply via email to