
com.todostudy.iot.mqtt.server.protocol.PubRec Maven / Gradle / Ivy
/**
* Copyright (c) 2018, Mr.Wang ([email protected]) All rights reserved.
* modify by hanson 2023-10
*/
package com.todostudy.iot.mqtt.server.protocol;
import com.todostudy.iot.mqtt.server.common.Tools;
import com.todostudy.iot.mqtt.server.common.message.DupPubRelMessageStore;
import com.todostudy.iot.mqtt.server.common.message.IDupPubRelMessageStoreService;
import com.todostudy.iot.mqtt.server.common.message.IDupPublishMessageStoreService;
import io.netty.channel.Channel;
import io.netty.handler.codec.mqtt.*;
import io.netty.util.AttributeKey;
import lombok.extern.slf4j.Slf4j;
/**
* PUBREC连接处理
*/
@Slf4j
public class PubRec {
private IDupPublishMessageStoreService dupPublishMessageStoreService;
private IDupPubRelMessageStoreService dupPubRelMessageStoreService;
public PubRec(IDupPublishMessageStoreService dupPublishMessageStoreService, IDupPubRelMessageStoreService dupPubRelMessageStoreService) {
this.dupPublishMessageStoreService = dupPublishMessageStoreService;
this.dupPubRelMessageStoreService = dupPubRelMessageStoreService;
}
public void processPubRec(Channel channel, MqttMessageIdVariableHeader variableHeader) {
MqttMessage pubRelMessage = MqttMessageFactory.newMessage(
new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_MOST_ONCE, false, 0),
MqttMessageIdVariableHeader.from(variableHeader.messageId()), null);
log.debug("PUBREC - clientId: {}, messageId: {}", (String) channel.attr(AttributeKey.valueOf(Tools.clientId)).get(), variableHeader.messageId());
dupPublishMessageStoreService.remove((String) channel.attr(AttributeKey.valueOf(Tools.clientId)).get(), variableHeader.messageId());
DupPubRelMessageStore dupPubRelMessageStore = new DupPubRelMessageStore().setClientId((String) channel.attr(AttributeKey.valueOf(Tools.clientId)).get())
.setMessageId(variableHeader.messageId());
dupPubRelMessageStoreService.put((String) channel.attr(AttributeKey.valueOf(Tools.clientId)).get(), dupPubRelMessageStore);
channel.writeAndFlush(pubRelMessage);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy