Java 类io.netty.handler.codec.mqtt.MqttMessage 实例源码
项目:lannister
文件:PubRelReceiver.java
protected void handle(ChannelHandlerContext ctx, Session session, int messageId) {
// TODO what if the PUBREL is resented one?
Topic topic = Topic.NEXUS.get(session.clientId(), messageId, ClientType.PUBLISHER);
if (topic == null) {
logger.error("PUBREL target does not exist [clientId={}, messageId={}]", session.clientId(), messageId);
session.dispose(true); // [MQTT-3.3.5-2]
return;
}
MqttMessage toSend = MqttMessageFactory.pubcomp(messageId);
final String log = toSend.toString();
session.send(toSend, f -> {
if (!f.isSuccess()) {
logger.error("packet outgoing failed [{}] {}", log, f.cause());
return;
}
InboundMessageStatus.NEXUS.removeByKey(messageId, session.clientId());
logger.debug("Inbound message status REMOVED [clientId={}, messageId={}]", session.clientId(), messageId);
});
}
项目:lannister
文件:MessageSender.java
protected void send(MqttMessage message, GenericFutureListener<? extends Future<? super Void>> completeListener) {
if (!session.isConnected(true)) {
logger.error("Message is not sent - Channel is inactive or out of the node. [{}]", message);
return;
}
ChannelHandlerContext ctx = Session.NEXUS.channelHandlerContext(session.clientId());
String log = message.toString();
ChannelFuture cf = ctx.writeAndFlush(message).addListener(f -> {
if (f.isSuccess()) {
logger.debug("packet outgoing [{}]", log);
}
else {
logger.error("packet outgoing failed [{}] {}", log, f.cause());
}
});
if (completeListener != null) {
cf.addListener(completeListener);
}
}
项目:iotracah
文件:MqttServer.java
/**
* Provides the Observer with a new item to observe.
* <p>
* The {@link com.caricah.iotracah.core.modules.Worker} may call this method 0 or more times.
* <p>
* The {@code Observable} will not call this method again after it calls either {@link #onCompleted} or
* {@link #onError}.
*
* @param ioTMessage the item emitted by the Observable
*/
@Override
public void onNext(IOTMessage ioTMessage) {
if(null == ioTMessage || !Protocol.MQTT.equals(ioTMessage.getProtocol())){
return;
}
log.debug(" MqttServer onNext : message outbound {}", ioTMessage);
MqttMessage mqttMessage = toServerMessage(ioTMessage);
if(null == mqttMessage){
log.debug(" MqttServer onNext : ignoring outbound message {}", ioTMessage);
}else {
serverImpl.pushToClient(ioTMessage.getConnectionId(), mqttMessage);
}
serverImpl.postProcess(ioTMessage);
}
项目:moquette
文件:PublishReceiverHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object message) {
MqttMessage msg = (MqttMessage) message;
MqttMessageType messageType = msg.fixedHeader().messageType();
try {
switch (messageType) {
case PUBLISH:
LOG.info("Received a message of type {}", messageType);
handlePublish((MqttPublishMessage) msg);
return;
default:
LOG.info("Received a message of type {}", messageType);
}
} catch (Exception ex) {
LOG.error("Bad error in processing the message", ex);
}
}
项目:moquette
文件:NettyPublishReceiverHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object message) {
MqttMessage msg = (MqttMessage) message;
MqttMessageType type = msg.fixedHeader().messageType();
try {
switch (type) {
case PUBLISH:
LOG.info("Received a message of type {}", type);
handlePublish((MqttPublishMessage) msg);
return;
default:
LOG.info("Received a message of type {}", type);
}
} catch (Exception ex) {
LOG.error("Bad error in processing the message", ex);
}
}
项目:moquette
文件:DropWizardMetricsHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object message) {
MqttMessage msg = (MqttMessage) message;
MqttMessageType messageType = msg.fixedHeader().messageType();
switch (messageType) {
case PUBLISH:
this.publishesMetrics.mark();
break;
case SUBSCRIBE:
this.subscribeMetrics.mark();
break;
case CONNECT:
this.connectedClientsMetrics.inc();
break;
case DISCONNECT:
this.connectedClientsMetrics.dec();
break;
default:
break;
}
ctx.fireChannelRead(message);
}
项目:moquette
文件:ServerLowlevelMessagesIntegrationTests.java
@Test
public void testWillMessageIsWiredOnClientKeepAliveExpiry() throws Exception {
LOG.info("*** testWillMessageIsWiredOnClientKeepAliveExpiry ***");
String willTestamentTopic = "/will/test";
String willTestamentMsg = "Bye bye";
m_willSubscriber.connect();
m_willSubscriber.subscribe(willTestamentTopic, 0);
m_client.clientId("FAKECLNT").connect(willTestamentTopic, willTestamentMsg);
long connectTime = System.currentTimeMillis();
Awaitility.await()
.atMost(7, TimeUnit.SECONDS)
.untilAsserted(() -> {
// but after the 2 KEEP ALIVE timeout expires it gets fired,
// NB it's 1,5 * KEEP_ALIVE so 3 secs and some millis to propagate the message
org.eclipse.paho.client.mqttv3.MqttMessage msg = m_messageCollector.getMessageImmediate();
assertNotNull("the will message should be fired after keep alive!", msg);
// the will message hasn't to be received before the elapsing of Keep Alive timeout
assertTrue(System.currentTimeMillis() - connectTime > 3000);
assertEquals(willTestamentMsg, new String(msg.getPayload(), StandardCharsets.UTF_8));
});
m_willSubscriber.disconnect();
}
项目:moquette
文件:ServerLowlevelMessagesIntegrationTests.java
@Test
public void testWillMessageIsPublishedOnClientBadDisconnection() throws InterruptedException, MqttException {
LOG.info("*** testWillMessageIsPublishedOnClientBadDisconnection ***");
String willTestamentTopic = "/will/test";
String willTestamentMsg = "Bye bye";
m_willSubscriber.connect();
m_willSubscriber.subscribe(willTestamentTopic, 0);
m_client.clientId("FAKECLNT").connect(willTestamentTopic, willTestamentMsg);
// kill will publisher
m_client.close();
// Verify will testament is published
org.eclipse.paho.client.mqttv3.MqttMessage receivedTestament = m_messageCollector.waitMessage(1);
assertEquals(willTestamentMsg, new String(receivedTestament.getPayload()));
m_willSubscriber.disconnect();
}
项目:iothub
文件:MqttTransportHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
log.info("[{}] Processing msg: {}", sessionId, msg);
if (msg instanceof MqttMessage) {
MqttMessage mqttMessage = (MqttMessage) msg;
MqttFixedHeader fixedHeader = mqttMessage.fixedHeader();
if (fixedHeader != null) {
processMqttMsg(ctx, (MqttMessage) msg);
} else {
//xtx
}
}
}
项目:iothub
文件:MqttTransportHandler.java
private void processMqttMsg(ChannelHandlerContext ctx, MqttMessage msg) {
// deviceSessionCtx.setChannel(ctx);
// assetSessionCtx.setChannel(ctx);
switch (msg.fixedHeader().messageType()) {
case CONNECT:
processConnect(ctx, (MqttConnectMessage) msg);
break;
case PUBLISH:
processPublish(ctx, (MqttPublishMessage) msg);
// System.out.println("write...");
// ctx.write("just for test");
break;
case SUBSCRIBE:
processSubscribe(ctx, (MqttSubscribeMessage) msg);
break;
case UNSUBSCRIBE:
processUnsubscribe(ctx, (MqttUnsubscribeMessage) msg);
break;
case PINGREQ:
if (checkConnected(ctx)) {
ctx.writeAndFlush(new MqttMessage(new MqttFixedHeader(PINGRESP, false, AT_MOST_ONCE, false, 0)));
}
break;
case DISCONNECT:
if (checkConnected(ctx)) {
processDisconnect(ctx);
}
break;
}
}
项目:j1st-mqtt
文件:SessionRegistry.java
/**
* Send MQTT message to specific client
*
* @param msg MQTT Message to be sent
* @param clientId Client Id
* @param packetId Packet Id
* @param flush Flush?
*/
public void sendMessage(MqttMessage msg, String clientId, Integer packetId, boolean flush) {
ChannelHandlerContext ctx = getSession(clientId);
if (ctx == null) {
String pid = packetId == null || packetId <= 0 ? "" : String.valueOf(packetId);
logger.debug("Message failed: Message {} {} failed to send to {}: Client not connected to this node", msg.fixedHeader().messageType(), pid, clientId);
return;
}
sendMessage(ctx, msg, clientId, packetId, flush);
}
项目:j1st-mqtt
文件:MessageMetricsHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
if (msg instanceof MqttMessage) {
MqttMessage mqtt = (MqttMessage) msg;
if (StringUtils.isBlank(this.clientId) && mqtt.fixedHeader().messageType() == MqttMessageType.CONNECT) {
this.clientId = ((MqttConnectPayload) mqtt.payload()).clientId();
}
if (StringUtils.isNotBlank(this.clientId)) {
this.metrics.measurement(this.clientId, this.brokerId, MessageDirection.IN, mqtt.fixedHeader().messageType());
}
this.metrics.measurement(this.brokerId, MessageDirection.IN, mqtt.fixedHeader().messageType());
}
ctx.fireChannelRead(msg);
}
项目:j1st-mqtt
文件:MessageMetricsHandler.java
@Override
public void write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception {
if (msg instanceof MqttMessage) {
MqttMessage mqtt = (MqttMessage) msg;
if (StringUtils.isNotBlank(this.clientId)) {
this.metrics.measurement(this.clientId, this.brokerId, MessageDirection.OUT, mqtt.fixedHeader().messageType());
}
this.metrics.measurement(this.brokerId, MessageDirection.OUT, mqtt.fixedHeader().messageType());
}
ctx.write(msg, promise);
}
项目:iot-platform
文件:PingReqHandler.java
public MqttMessage doMessage(Channel channel, MqttMessage msg) {
String channelId = channel.id().asLongText();
logger.debug("MQTT PINGREQ " + channelId);
// 更新最新连接时间
ApplicationContext.updateChannelConTime(channelId);
MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PINGRESP, false, MqttQoS.AT_MOST_ONCE, false, 0);
MqttMessage message = new MqttMessage(fixedHeader);
return message;
}
项目:iot-platform
文件:PubAckHandler.java
public MqttMessage doMessage(MqttMessage msg) {
logger.debug("MQTT PUBACK");
MqttPublishVariableHeader publishVariableHeader = (MqttPublishVariableHeader) msg.variableHeader();
int packetId = publishVariableHeader.packetId();
ManagerHandler.removeSendedMessage(packetId);
return null;
}
项目:iotplatform
文件:MqttTransportHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) {
log.info("[{}] Processing msg: {}", sessionId, msg);
if (msg instanceof MqttMessage) {
MqttMessage mqttMessage = (MqttMessage) msg;
MqttFixedHeader fixedHeader = mqttMessage.fixedHeader();
if (fixedHeader != null) {
processMqttMsg(ctx, (MqttMessage) msg);
} else {
//xtx
}
}
}
项目:iotplatform
文件:MqttTransportHandler.java
private void processMqttMsg(ChannelHandlerContext ctx, MqttMessage msg) {
// deviceSessionCtx.setChannel(ctx);
// assetSessionCtx.setChannel(ctx);
switch (msg.fixedHeader().messageType()) {
case CONNECT:
processConnect(ctx, (MqttConnectMessage) msg);
break;
case PUBLISH:
processPublish(ctx, (MqttPublishMessage) msg);
// System.out.println("write...");
// ctx.write("just for test");
break;
case SUBSCRIBE:
processSubscribe(ctx, (MqttSubscribeMessage) msg);
break;
case UNSUBSCRIBE:
processUnsubscribe(ctx, (MqttUnsubscribeMessage) msg);
break;
case PINGREQ:
if (checkConnected(ctx)) {
ctx.writeAndFlush(new MqttMessage(new MqttFixedHeader(PINGRESP, false, AT_MOST_ONCE, false, 0)));
}
break;
case DISCONNECT:
if (checkConnected(ctx)) {
processDisconnect(ctx);
}
break;
}
}
项目:iotplatform
文件:DeviceSessionCtx.java
private void pushToNetwork(MqttMessage msg) {
if (channel == null) {
log.warn("channel is null:" + DeviceSessionCtx.class);
} else {
channel.writeAndFlush(msg);
}
}
项目:iotplatform
文件:DeviceSessionCtx.java
@Override
public void onMsg(SessionCtrlMsg msg) throws SessionException {
if (msg instanceof SessionCloseMsg) {
pushToNetwork(
new MqttMessage(new MqttFixedHeader(MqttMessageType.DISCONNECT, false, MqttQoS.AT_MOST_ONCE, false, 0)));
channel.close();
}
}
项目:iotplatform
文件:JsonMqttAdaptor.java
@Override
public AdaptorToSessionActorMsg convertToActorMsg(DeviceSessionCtx ctx, MsgType type, MqttMessage inbound)
throws AdaptorException {
FromDeviceMsg msg;
switch (type) {
case POST_TELEMETRY_REQUEST:
msg = convertToTelemetryUploadRequest(ctx, (MqttPublishMessage) inbound);
break;
case POST_ATTRIBUTES_REQUEST:
msg = convertToUpdateAttributesRequest(ctx, (MqttPublishMessage) inbound);
break;
case SUBSCRIBE_ATTRIBUTES_REQUEST:
msg = new AttributesSubscribeMsg();
break;
case UNSUBSCRIBE_ATTRIBUTES_REQUEST:
msg = new AttributesUnsubscribeMsg();
break;
case SUBSCRIBE_RPC_COMMANDS_REQUEST:
msg = new RpcSubscribeMsg();
break;
case UNSUBSCRIBE_RPC_COMMANDS_REQUEST:
msg = new RpcUnsubscribeMsg();
break;
case GET_ATTRIBUTES_REQUEST:
msg = convertToGetAttributesRequest(ctx, (MqttPublishMessage) inbound);
break;
case TO_DEVICE_RPC_RESPONSE:
msg = convertToRpcCommandResponse(ctx, (MqttPublishMessage) inbound);
break;
case TO_SERVER_RPC_REQUEST:
msg = convertToServerRpcRequest(ctx, (MqttPublishMessage) inbound);
break;
default:
log.warn("[{}] Unsupported msg type: {}!", ctx.getSessionId(), type);
throw new AdaptorException(new IllegalArgumentException("Unsupported msg type: " + type + "!"));
}
return new BasicAdaptorToSessionActorMsg(ctx, msg);
}
项目:lannister
文件:MqttMessageFactory.java
public static MqttMessage pubrec(int messageId) {
MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBREC, false, MqttQoS.AT_MOST_ONCE, false,
2);
MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(messageId);
return new MqttMessage(fixedHeader, variableHeader);
}
项目:lannister
文件:MqttMessageFactory.java
public static MqttMessage pubrel(int messageId) {
MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBREL, false, MqttQoS.AT_LEAST_ONCE, false,
2);
MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(messageId);
return new MqttMessage(fixedHeader, variableHeader);
}
项目:lannister
文件:MqttMessageFactory.java
public static MqttMessage pubcomp(int messageId) {
MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.PUBCOMP, false, MqttQoS.AT_MOST_ONCE, false,
2);
MqttMessageIdVariableHeader variableHeader = MqttMessageIdVariableHeader.from(messageId);
return new MqttMessage(fixedHeader, variableHeader);
}
项目:lannister
文件:MqttClient.java
protected ChannelFuture send(MqttMessage message) {
if (!isConnected()) {
logger.error("Channel is not active");
return null;
}
return channel.writeAndFlush(message);
}
项目:lannister
文件:MqttPacketReceiver.java
@Override
protected void channelRead0(ChannelHandlerContext ctx, MqttMessage msg) throws Exception {
switch (msg.fixedHeader().messageType()) {
case PUBLISH:
if (receiver != null) {
receiver.messageReceived(Message.newMessage(client.clientId(), (MqttPublishMessage) msg));
}
int messageId = ((MqttPublishMessage) msg).variableHeader().messageId();
if (((MqttPublishMessage) msg).fixedHeader().qosLevel() == MqttQoS.AT_LEAST_ONCE) {
client.send(MqttMessageFactory.puback(messageId));
}
else if (((MqttPublishMessage) msg).fixedHeader().qosLevel() == MqttQoS.EXACTLY_ONCE) {
client.send(MqttMessageFactory.pubrec(messageId));
}
break;
case CONNACK:
sharedObject.receivedMessage(msg);
synchronized (sharedObject.locker()) {
sharedObject.locker().notify();
}
break;
case PUBREC:
client.send(MqttMessageFactory.pubrel(((MqttMessageIdVariableHeader) msg.variableHeader()).messageId()));
break;
case SUBACK:
case PUBACK:
case PUBCOMP:
default:
break;
}
}
项目:vertx-mqtt
文件:MqttServerBadClientTest.java
private MqttMessage createConnectPacket(MqttClientOptions options) {
MqttFixedHeader fixedHeader = new MqttFixedHeader(MqttMessageType.CONNECT,
false,
MqttQoS.AT_MOST_ONCE,
false,
0);
MqttConnectVariableHeader variableHeader = new MqttConnectVariableHeader(
PROTOCOL_NAME,
PROTOCOL_VERSION,
options.hasUsername(),
options.hasPassword(),
options.isWillRetain(),
options.getWillQoS(),
options.isWillFlag(),
options.isCleanSession(),
options.getKeepAliveTimeSeconds()
);
MqttConnectPayload payload = new MqttConnectPayload(
options.getClientId() == null ? "" : options.getClientId(),
options.getWillTopic(),
options.getWillMessage() != null ? options.getWillMessage().getBytes(StandardCharsets.UTF_8) : null,
options.hasUsername() ? options.getUsername() : null,
options.hasPassword() ? options.getPassword().getBytes(StandardCharsets.UTF_8) : null
);
return MqttMessageFactory.newMessage(fixedHeader, variableHeader, payload);
}
项目:mithqtt
文件:SessionRegistry.java
/**
* Send MQTT message to specific client
*
* @param msg MQTT Message to be sent
* @param clientId Client Id
* @param packetId Packet Id
* @param flush Flush?
*/
public void sendMessage(MqttMessage msg, String clientId, Integer packetId, boolean flush) {
ChannelHandlerContext ctx = getSession(clientId);
if (ctx == null) {
String pid = packetId == null || packetId <= 0 ? "" : String.valueOf(packetId);
logger.debug("Message failed: Message {} {} failed to send to {}: Client not connected to this node", msg.fixedHeader().messageType(), pid, clientId);
return;
}
sendMessage(ctx, msg, clientId, packetId, flush);
}
项目:mithqtt
文件:SessionRegistry.java
/**
* Send MQTT message to specific session
*
* @param ctx ChannelHandlerContext as Session
* @param msg MQTT Message to be sent
* @param clientId Client Id
* @param packetId Packet Id
* @param flush Flush?
*/
public void sendMessage(ChannelHandlerContext ctx, MqttMessage msg, String clientId, Integer packetId, boolean flush) {
String pid = packetId == null || packetId <= 0 ? "" : String.valueOf(packetId);
ChannelFuture future = flush ? ctx.writeAndFlush(msg) : ctx.write(msg);
future.addListener(f -> {
if (f.isSuccess()) {
logger.debug("Message succeed: Message {} {} has been sent to client {} successfully", msg.fixedHeader().messageType(), pid, clientId);
} else {
logger.debug("Message failed: Message {} {} failed to send to client {}: ", msg.fixedHeader().messageType(), pid, clientId, f.cause());
}
});
}
项目:blynk-server
文件:MqttHardwareHandler.java
@Override
public void messageReceived(ChannelHandlerContext ctx, MqttMessage msg) {
this.stats.incrementMqttStat();
MqttMessageType messageType = msg.fixedHeader().messageType();
switch (messageType) {
case PUBLISH :
MqttPublishMessage publishMessage = (MqttPublishMessage) msg;
String topic = publishMessage.variableHeader().topicName();
switch (topic.toLowerCase()) {
case "hardware" :
hardware.messageReceived(ctx, state, publishMessage);
break;
}
break;
case PINGREQ :
ctx.writeAndFlush(
MqttMessageFactory.newMessage(msg.fixedHeader(), msg.variableHeader(), null),
ctx.voidPromise());
break;
case DISCONNECT :
log.trace("Got disconnect. Closing...");
ctx.close();
break;
}
}
项目:activemq-artemis
文件:SimpleMQTTInterceptor.java
@Override
public boolean intercept(final MqttMessage mqttMessage, RemotingConnection connection) {
System.out.println("MQTT control packet was intercepted " + mqttMessage.fixedHeader().messageType());
// If you need to handle an specific packet type:
if (mqttMessage instanceof MqttPublishMessage) {
MqttPublishMessage message = (MqttPublishMessage) mqttMessage;
String originalMessage = message.payload().toString(Charset.forName("UTF-8"));
System.out.println("Original message: " + originalMessage);
// The new message content must not be bigger that the original content.
String modifiedMessage = "Modified message ";
message.payload().setBytes(0, modifiedMessage.getBytes());
} else {
if (mqttMessage instanceof MqttConnectMessage) {
MqttConnectMessage connectMessage = (MqttConnectMessage) mqttMessage;
System.out.println("MQTT CONNECT control packet was intercepted " + connectMessage);
}
}
// We return true which means "call next interceptor" (if there is one) or target.
// If we returned false, it means "abort call" - no more interceptors would be called and neither would
// the target
return true;
}
项目:activemq-artemis
文件:MQTTInterceptorPropertiesTest.java
private boolean checkMessageProperties(MqttMessage message, Map<String, Object> expectedProperties) {
System.out.println("Checking properties in interceptor");
try {
assertNotNull(message);
assertNotNull(server.getNodeID());
MqttFixedHeader header = message.fixedHeader();
assertNotNull(header.messageType());
assertEquals(header.qosLevel().value(), AT_MOST_ONCE);
assertEquals(header.isRetain(), expectedProperties.get(RETAINED));
} catch (Throwable t) {
collector.addError(t);
}
return true;
}
项目:activemq-artemis
文件:MQTTTestSupport.java
@Override
public boolean intercept(MqttMessage packet, RemotingConnection connection) throws ActiveMQException {
if (packet.getClass() == MqttPublishMessage.class) {
messageCount++;
}
return true;
}
项目:activemq-artemis
文件:MQTTTestSupport.java
@Override
public boolean intercept(MqttMessage packet, RemotingConnection connection) throws ActiveMQException {
if (packet.getClass() == MqttPublishMessage.class) {
messageCount++;
}
return true;
}
项目:activemq-artemis
文件:MQTTProtocolHandler.java
protected void send(int messageId, String topicName, int qosLevel, boolean isRetain, ByteBuf payload, int deliveryCount) {
boolean redelivery = qosLevel == 0 ? false : (deliveryCount > 0);
MqttFixedHeader header = new MqttFixedHeader(MqttMessageType.PUBLISH, redelivery, MqttQoS.valueOf(qosLevel), isRetain, 0);
MqttPublishVariableHeader varHeader = new MqttPublishVariableHeader(topicName, messageId);
MqttMessage publish = new MqttPublishMessage(header, varHeader, payload);
sendToClient(publish);
}
项目:moquette
文件:ConnectionDescriptorStore.java
public boolean sendMessage(MqttMessage message, Integer messageID, String clientID) {
final MqttMessageType messageType = message.fixedHeader().messageType();
try {
if (messageID != null) {
LOG.info("Sending {} message CId=<{}>, messageId={}", messageType, clientID, messageID);
} else {
LOG.debug("Sending {} message CId=<{}>", messageType, clientID);
}
ConnectionDescriptor descriptor = connectionDescriptors.get(clientID);
if (descriptor == null) {
if (messageID != null) {
LOG.error("Client has just disconnected. {} message could not be sent. CId=<{}>, messageId={}",
messageType, clientID, messageID);
} else {
LOG.error("Client has just disconnected. {} could not be sent. CId=<{}>", messageType, clientID);
}
/*
* If the client has just disconnected, its connection descriptor will be null. We
* don't have to make the broker crash: we'll just discard the PUBACK message.
*/
return false;
}
descriptor.writeAndFlush(message);
return true;
} catch (Throwable e) {
String errorMsg = "Unable to send " + messageType + " message. CId=<" + clientID + ">";
if (messageID != null) {
errorMsg += ", messageId=" + messageID;
}
LOG.error(errorMsg, e);
return false;
}
}
项目:moquette
文件:MockReceiverChannel.java
public void write(Object value) {
try {
this.m_receivedMessage = (MqttMessage) value;
} catch (Exception ex) {
throw new AssertionError("Wrong return code");
}
}
项目:moquette
文件:Utils.java
static byte encodeFlags(MqttMessage message) {
byte flags = 0;
if (message.fixedHeader().isDup()) {
flags |= 0x08;
}
if (message.fixedHeader().isRetain()) {
flags |= 0x01;
}
flags |= (message.fixedHeader().qosLevel().value() & 0x03) << 1;
return flags;
}
项目:iothub
文件:MqttTransportHandler.java
private MqttMessage createUnSubAckMessage(int msgId) {
MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(UNSUBACK, false, AT_LEAST_ONCE, false, 0);
MqttMessageIdVariableHeader mqttMessageIdVariableHeader = MqttMessageIdVariableHeader.from(msgId);
return new MqttMessage(mqttFixedHeader, mqttMessageIdVariableHeader);
}
项目:DovakinMQ
文件:MqttHandler.java
@Override
public void channelRead(ChannelHandlerContext ctx, Object msg) throws Exception {
MqttMessage mqttMessage = (MqttMessage) msg;
mProcessor.process(mqttMessage, ctx.channel());
}
项目:DovakinMQ
文件:MqttSession.java
public void sendMessage(MqttMessage message){
QoSMessagePack messagePack = new QoSMessagePack(
connection,
message);
MessageExecutor.put(messagePack);
}