本文整理汇总了Java中io.netty.handler.codec.mqtt.MqttPublishMessage类的典型用法代码示例。如果您正苦于以下问题:Java MqttPublishMessage类的具体用法?Java MqttPublishMessage怎么用?Java MqttPublishMessage使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
MqttPublishMessage类属于io.netty.handler.codec.mqtt包,在下文中一共展示了MqttPublishMessage类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: convertToGetAttributesRequest
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private FromDeviceMsg convertToGetAttributesRequest(DeviceSessionCtx ctx, MqttPublishMessage inbound)
throws AdaptorException {
String topicName = inbound.variableHeader().topicName();
try {
Integer requestId = Integer
.valueOf(topicName.substring(MqttTopics.DEVICE_ATTRIBUTES_REQUEST_TOPIC_PREFIX.length()));
String payload = inbound.payload().toString(UTF8);
JsonElement requestBody = new JsonParser().parse(payload);
Set<String> clientKeys = toStringSet(requestBody, "clientKeys");
Set<String> sharedKeys = toStringSet(requestBody, "sharedKeys");
if (clientKeys == null && sharedKeys == null) {
return new BasicGetAttributesRequest(requestId);
} else {
return new BasicGetAttributesRequest(requestId, clientKeys, sharedKeys);
}
} catch (RuntimeException e) {
log.warn("Failed to decode get attributes request", e);
throw new AdaptorException(e);
}
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:21,代码来源:JsonMqttAdaptor.java
示例2: onDeviceTelemetry
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public void onDeviceTelemetry(MqttPublishMessage mqttMsg) throws AdaptorException {
JsonElement json = validateJsonPayload(gatewaySessionId, mqttMsg.payload());
int requestId = mqttMsg.variableHeader().messageId();
if (json.isJsonObject()) {
JsonObject jsonObj = json.getAsJsonObject();
for (Map.Entry<String, JsonElement> deviceEntry : jsonObj.entrySet()) {
String deviceName = checkDeviceConnected(deviceEntry.getKey());
if (!deviceEntry.getValue().isJsonArray()) {
throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
}
BasicTelemetryUploadRequest request = new BasicTelemetryUploadRequest(requestId);
JsonArray deviceData = deviceEntry.getValue().getAsJsonArray();
for (JsonElement element : deviceData) {
JsonConverter.parseWithTs(request, element.getAsJsonObject());
}
GatewayDeviceSessionCtx deviceSessionCtx = devices.get(deviceName);
processor.process(new BasicToDeviceActorSessionMsg(deviceSessionCtx.getDevice(),
new BasicAdaptorToSessionActorMsg(deviceSessionCtx, request)));
}
} else {
throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
}
}
开发者ID:thingsboard,项目名称:thingsboard,代码行数:24,代码来源:GatewaySessionCtx.java
示例3: onDeviceAttributes
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public void onDeviceAttributes(MqttPublishMessage mqttMsg) throws AdaptorException {
JsonElement json = validateJsonPayload(gatewaySessionId, mqttMsg.payload());
int requestId = mqttMsg.variableHeader().messageId();
if (json.isJsonObject()) {
JsonObject jsonObj = json.getAsJsonObject();
for (Map.Entry<String, JsonElement> deviceEntry : jsonObj.entrySet()) {
String deviceName = checkDeviceConnected(deviceEntry.getKey());
if (!deviceEntry.getValue().isJsonObject()) {
throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
}
long ts = System.currentTimeMillis();
BasicUpdateAttributesRequest request = new BasicUpdateAttributesRequest(requestId);
JsonObject deviceData = deviceEntry.getValue().getAsJsonObject();
request.add(JsonConverter.parseValues(deviceData).stream().map(kv -> new BaseAttributeKvEntry(kv, ts)).collect(Collectors.toList()));
GatewayDeviceSessionCtx deviceSessionCtx = devices.get(deviceName);
processor.process(new BasicToDeviceActorSessionMsg(deviceSessionCtx.getDevice(),
new BasicAdaptorToSessionActorMsg(deviceSessionCtx, request)));
}
} else {
throw new JsonSyntaxException(CAN_T_PARSE_VALUE + json);
}
}
开发者ID:thingsboard,项目名称:thingsboard,代码行数:23,代码来源:GatewaySessionCtx.java
示例4: channelRead
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@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);
}
}
开发者ID:andsel,项目名称:moquette,代码行数:19,代码来源:PublishReceiverHandler.java
示例5: channelRead
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@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);
}
}
开发者ID:andsel,项目名称:moquette,代码行数:19,代码来源:NettyPublishReceiverHandler.java
示例6: sendPublish
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
void sendPublish(ClientSession clientsession, MqttPublishMessage pubMessage) {
String clientId = clientsession.clientID;
final int messageId = pubMessage.variableHeader().messageId();
final String topicName = pubMessage.variableHeader().topicName();
MqttQoS qos = pubMessage.fixedHeader().qosLevel();
if (LOG.isDebugEnabled()) {
LOG.debug("Sending PUBLISH message. MessageId={}, CId={}, topic={}, qos={}, payload={}", messageId,
clientId, topicName, qos, DebugUtils.payload2Str(pubMessage.payload()));
} else {
LOG.info("Sending PUBLISH message. MessageId={}, CId={}, topic={}", messageId, clientId, topicName);
}
boolean messageDelivered = connectionDescriptorStore.sendMessage(pubMessage, messageId, clientId);
if (!messageDelivered) {
if (qos != AT_MOST_ONCE && !clientsession.isCleanSession()) {
LOG.warn("PUBLISH message could not be delivered. It will be stored. MessageId={}, CId={}, topic={}, "
+ "qos={}, removeTemporaryQoS2={}", messageId, clientId, topicName, qos, false);
clientsession.enqueue(asStoredMessage(pubMessage));
} else {
LOG.warn("PUBLISH message could not be delivered. It will be discarded. MessageId={}, CId={}, topic={}, " +
"qos={}, removeTemporaryQoS2={}", messageId, clientId, topicName, qos, true);
}
}
}
开发者ID:andsel,项目名称:moquette,代码行数:26,代码来源:PersistentQueueMessageSender.java
示例7: notifyTopicPublished
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@Override
public void notifyTopicPublished(final MqttPublishMessage msg, final String clientID, final String username) {
msg.retain();
executor.execute(() -> {
try {
int messageId = msg.variableHeader().messageId();
String topic = msg.variableHeader().topicName();
for (InterceptHandler handler : handlers.get(InterceptPublishMessage.class)) {
LOG.debug("Notifying MQTT PUBLISH message to interceptor. CId={}, messageId={}, topic={}, "
+ "interceptorId={}", clientID, messageId, topic, handler.getID());
handler.onPublish(new InterceptPublishMessage(msg, clientID, username));
}
} finally {
ReferenceCountUtil.release(msg);
}
});
}
开发者ID:andsel,项目名称:moquette,代码行数:19,代码来源:BrokerInterceptor.java
示例8: receivedPublishQos0
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
void receivedPublishQos0(Channel channel, MqttPublishMessage msg) {
// verify if topic can be write
final Topic topic = new Topic(msg.variableHeader().topicName());
String clientID = NettyUtils.clientID(channel);
String username = NettyUtils.userName(channel);
if (!m_authorizator.canWrite(topic, username, clientID)) {
LOG.error("MQTT client is not authorized to publish on topic. CId={}, topic={}", clientID, topic);
return;
}
// route message to subscribers
IMessagesStore.StoredMessage toStoreMsg = asStoredMessage(msg);
toStoreMsg.setClientID(clientID);
this.publisher.publish2Subscribers(toStoreMsg, topic);
if (msg.fixedHeader().isRetain()) {
// QoS == 0 && retain => clean old retained
m_messagesStore.cleanRetained(topic);
}
m_interceptor.notifyTopicPublished(msg, clientID, username);
}
开发者ID:andsel,项目名称:moquette,代码行数:24,代码来源:Qos0PublishHandler.java
示例9: processMqttMsg
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
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;
}
}
开发者ID:osswangxining,项目名称:iothub,代码行数:32,代码来源:MqttTransportHandler.java
示例10: processPublish
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private void processPublish(ChannelHandlerContext ctx, MqttPublishMessage mqttMsg) {
if (!checkConnected(ctx)) {
return;
}
String topicName = mqttMsg.variableHeader().topicName();
int msgId = mqttMsg.variableHeader().messageId();
log.info("[{}] Processing publish msg [{}][{}]!", sessionId, topicName, msgId);
if (topicName.startsWith(BASE_GATEWAY_API_TOPIC)) {
// if (gatewaySessionCtx != null) {
// gatewaySessionCtx.setChannel(ctx);
// try {
// if (topicName.equals(GATEWAY_TELEMETRY_TOPIC)) {
// gatewaySessionCtx.onDeviceTelemetry(mqttMsg);
// } else if (topicName.equals(GATEWAY_ATTRIBUTES_TOPIC)) {
// gatewaySessionCtx.onDeviceAttributes(mqttMsg);
// } else if (topicName.equals(GATEWAY_ATTRIBUTES_REQUEST_TOPIC)) {
// gatewaySessionCtx.onDeviceAttributesRequest(mqttMsg);
// } else if (topicName.equals(GATEWAY_RPC_TOPIC)) {
// gatewaySessionCtx.onDeviceRpcResponse(mqttMsg);
// } else if (topicName.equals(GATEWAY_CONNECT_TOPIC)) {
// gatewaySessionCtx.onDeviceConnect(mqttMsg);
// } else if (topicName.equals(GATEWAY_DISCONNECT_TOPIC)) {
// gatewaySessionCtx.onDeviceDisconnect(mqttMsg);
// }
// } catch (RuntimeException | AdaptorException e) {
// log.warn("[{}] Failed to process publish msg [{}][{}]", sessionId,
// topicName, msgId, e);
// }
// }
} else {
processDevicePublish(ctx, mqttMsg, topicName, msgId);
}
}
开发者ID:osswangxining,项目名称:iothub,代码行数:35,代码来源:MqttTransportHandler.java
示例11: add
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public void add(Topic topic, MqttPublishMessage message){
synchronized (lock){
if(node == null || topic == null) return;
topic.reset();
if(message != null) node.publish(message,topic.isTail());
buildNodes(node,topic.moveToNext(),message);
}
}
开发者ID:Dovakin-IO,项目名称:DovakinMQ,代码行数:9,代码来源:SubscriptionTree.java
示例12: buildNodes
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private void buildNodes(SubscriptionNode node, Topic topic, MqttPublishMessage message){
Topic.Element element = topic.next();
if (element == null) return;
SubscriptionNode var = node.addNode(element);
if(message != null) var.publish(message, !topic.hasNext());
buildNodes(var,topic,message);
}
开发者ID:Dovakin-IO,项目名称:DovakinMQ,代码行数:8,代码来源:SubscriptionTree.java
示例13: publish
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
public static void publish(MqttPublishMessage message){
Topic topic = new Topic(message.variableHeader().topicName());
Topic.Element element = topic.getHeadElement();
if (element == null) return;
SubscriptionTree cachedTree = subscriptions.get(element.getValue());
if(cachedTree == null){
SubscriptionTree tree = new SubscriptionTree();
tree.build(topic);
subscriptions.putIfAbsent(element.getValue(), tree);
} else {
cachedTree.add(topic,message);
}
}
开发者ID:Dovakin-IO,项目名称:DovakinMQ,代码行数:14,代码来源:SubscriptionCache.java
示例14: convertToActorMsg
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@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);
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:39,代码来源:JsonMqttAdaptor.java
示例15: createMqttPublishMsg
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private MqttPublishMessage createMqttPublishMsg(DeviceSessionCtx ctx, String topic, JsonElement json) {
MqttFixedHeader mqttFixedHeader = new MqttFixedHeader(MqttMessageType.PUBLISH, false, MqttQoS.AT_LEAST_ONCE, false,
0);
MqttPublishVariableHeader header = new MqttPublishVariableHeader(topic, ctx.nextMsgId());
ByteBuf payload = ALLOCATOR.buffer();
payload.writeBytes(GSON.toJson(json).getBytes(UTF8));
return new MqttPublishMessage(mqttFixedHeader, header, payload);
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:9,代码来源:JsonMqttAdaptor.java
示例16: convertToRpcCommandResponse
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private FromDeviceMsg convertToRpcCommandResponse(DeviceSessionCtx ctx, MqttPublishMessage inbound)
throws AdaptorException {
String topicName = inbound.variableHeader().topicName();
try {
Integer requestId = Integer.valueOf(topicName.substring(MqttTopics.DEVICE_RPC_RESPONSE_TOPIC.length()));
String payload = inbound.payload().toString(UTF8);
return new ToDeviceRpcResponseMsg(requestId, payload);
} catch (RuntimeException e) {
log.warn("Failed to decode get attributes request", e);
throw new AdaptorException(e);
}
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:13,代码来源:JsonMqttAdaptor.java
示例17: convertToUpdateAttributesRequest
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private UpdateAttributesRequest convertToUpdateAttributesRequest(SessionContext ctx, MqttPublishMessage inbound)
throws AdaptorException {
String payload = validatePayload(ctx.getSessionId(), inbound.payload());
try {
return JsonConverter.convertToAttributes(new JsonParser().parse(payload), inbound.variableHeader().messageId());
} catch (IllegalStateException | JsonSyntaxException ex) {
throw new AdaptorException(ex);
}
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:10,代码来源:JsonMqttAdaptor.java
示例18: convertToTelemetryUploadRequest
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private TelemetryUploadRequest convertToTelemetryUploadRequest(SessionContext ctx, MqttPublishMessage inbound)
throws AdaptorException {
String payload = validatePayload(ctx.getSessionId(), inbound.payload());
try {
return JsonConverter.convertToTelemetry(new JsonParser().parse(payload), inbound.variableHeader().messageId());
} catch (IllegalStateException | JsonSyntaxException ex) {
throw new AdaptorException(ex);
}
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:10,代码来源:JsonMqttAdaptor.java
示例19: convertToServerRpcRequest
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
private FromDeviceMsg convertToServerRpcRequest(DeviceSessionCtx ctx, MqttPublishMessage inbound)
throws AdaptorException {
String topicName = inbound.variableHeader().topicName();
String payload = validatePayload(ctx.getSessionId(), inbound.payload());
try {
Integer requestId = Integer.valueOf(topicName.substring(MqttTopics.DEVICE_RPC_REQUESTS_TOPIC.length()));
return JsonConverter.convertToServerRpcRequest(new JsonParser().parse(payload), requestId);
} catch (IllegalStateException | JsonSyntaxException ex) {
throw new AdaptorException(ex);
}
}
开发者ID:osswangxining,项目名称:iotplatform,代码行数:12,代码来源:JsonMqttAdaptor.java
示例20: channelRead0
import io.netty.handler.codec.mqtt.MqttPublishMessage; //导入依赖的package包/类
@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;
}
}
开发者ID:anyflow,项目名称:lannister,代码行数:37,代码来源:MqttPacketReceiver.java
注:本文中的io.netty.handler.codec.mqtt.MqttPublishMessage类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论