protected HeaderBase qos(QoS qos) { this.header &= 0xF9; this.header |= (qos.ordinal() << 1) & 0x06; return this; }
protected QoS qos() { return QoS.values()[((header & 0x06) >>> 1)]; } protected HeaderBase qos(QoS qos) {
/** * Given a PUBLISH command determine if it will expect an ACK based on the * QoS of the Publish command and the QoS of this subscription. * * @param publish The publish command to inspect. * @return true if the client will expect an PUBACK for this PUBLISH. */ public boolean expectAck(PUBLISH publish) { QoS publishQoS = publish.qos(); if (publishQoS.compareTo(this.qos) > 0) { publishQoS = this.qos; } return !publishQoS.equals(QoS.AT_MOST_ONCE); }
protected void restoreDurableSubs(List<SubscriptionInfo> subs) { try { for (SubscriptionInfo sub : subs) { String name = sub.getSubcriptionName(); String[] split = name.split(":", 2); QoS qoS = QoS.valueOf(split[0]); onSubscribe(new Topic(split[1], qoS)); // mark this durable subscription as restored by Broker restoredDurableSubs.add(MQTTProtocolSupport.convertMQTTToActiveMQ(split[1])); } } catch (IOException e) { LOG.warn("Could not restore the MQTT durable subs.", e); } }
/** * Given a PUBLISH command determine if it will expect an ACK based on the * QoS of the Publish command and the QoS of this subscription. * * @param publish The publish command to inspect. * @return true if the client will expect an PUBACK for this PUBLISH. */ public boolean expectAck(PUBLISH publish) { QoS publishQoS = publish.qos(); if (publishQoS.compareTo(this.qos) > 0) { publishQoS = this.qos; } return !publishQoS.equals(QoS.AT_MOST_ONCE); }
protected void restoreDurableSubs(List<SubscriptionInfo> subs) { try { for (SubscriptionInfo sub : subs) { String name = sub.getSubcriptionName(); String[] split = name.split(":", 2); QoS qoS = QoS.valueOf(split[0]); onSubscribe(new Topic(split[1], qoS)); // mark this durable subscription as restored by Broker restoredDurableSubs.add(MQTTProtocolSupport.convertMQTTToActiveMQ(split[1])); } } catch (IOException e) { LOG.warn("Could not restore the MQTT durable subs.", e); } }
public CONNECT willQos(QoS willQos) { this.willQos = (byte) willQos.ordinal(); return this; }
public QoS willQos() { return QoS.values()[willQos]; }
/** * Given a PUBLISH command determine if it will expect an ACK based on the * QoS of the Publish command and the QoS of this subscription. * * @param publish * The publish command to inspect. * * @return true if the client will expect an PUBACK for this PUBLISH. */ public boolean expectAck(PUBLISH publish) { QoS publishQoS = publish.qos(); if (publishQoS.compareTo(this.qos) > 0){ publishQoS = this.qos; } return !publishQoS.equals(QoS.AT_MOST_ONCE); }
protected void restoreDurableSubs(List<SubscriptionInfo> subs) { try { for (SubscriptionInfo sub : subs) { String name = sub.getSubcriptionName(); String[] split = name.split(":", 2); QoS qoS = QoS.valueOf(split[0]); onSubscribe(new Topic(split[1], qoS)); // mark this durable subscription as restored by Broker restoredDurableSubs.add(MQTTProtocolSupport.convertMQTTToActiveMQ(split[1])); } } catch (IOException e) { LOG.warn("Could not restore the MQTT durable subs.", e); } }
public MQTTFrame encode() { try { DataByteArrayOutputStream os = new DataByteArrayOutputStream(); QoS qos = qos(); if(qos != QoS.AT_MOST_ONCE) { os.writeShort(messageId); } for(Topic topic: topics) { MessageSupport.writeUTF(os, topic.name()); os.writeByte(topic.qos().ordinal()); } MQTTFrame frame = new MQTTFrame(); frame.header(header()); frame.commandType(TYPE); return frame.buffer(os.toBuffer()); } catch (IOException e) { throw new RuntimeException("The impossible happened"); } }
public SUBSCRIBE decode(MQTTFrame frame) throws ProtocolException { assert(frame.buffers.length == 1); header(frame.header()); DataByteArrayInputStream is = new DataByteArrayInputStream(frame.buffers[0]); QoS qos = qos(); if(qos != QoS.AT_MOST_ONCE) { messageId = is.readShort(); } ArrayList<Topic> list = new ArrayList<Topic>(); while(is.available() > 0) { Topic topic = new Topic(MessageSupport.readUTF(is), QoS.values()[is.readByte()]); list.add(topic); } topics = list.toArray(new Topic[list.size()]); return this; }
/** * Given a PUBLISH command determine if it will expect an ACK based on the * QoS of the Publish command and the QoS of this subscription. * * @param publish * The publish command to inspect. * * @return true if the client will expect an PUBACK for this PUBLISH. */ public boolean expectAck(PUBLISH publish) { QoS publishQoS = publish.qos(); if (publishQoS.compareTo(this.qos) > 0){ publishQoS = this.qos; } return !publishQoS.equals(QoS.AT_MOST_ONCE); }
@Override public Serializable doSend(Message message, MeasurementUnit measurementUnit) throws Exception { String response = null; mqttConnection.publish(topicName, message.getPayload().toString().getBytes(Utils.getDefaultEncoding()), QoS.valueOf(qos.toUpperCase()), false); if (isResponseExpected) { mqttResponse = mqttResponseConnection.receive(); if (mqttResponse != null) { response = new String(mqttResponse.getPayload(), Utils.getDefaultEncoding()); } } return response; }
protected HeaderBase qos(QoS qos) { this.header &= 0xF9; this.header |= (qos.ordinal() << 1) & 0x06; return this; }
} else if ("--will-qos".equals(arg)) { int v = Integer.parseInt(shift(argl)); if( v > QoS.values().length ) { stderr("Invalid qos value : " + v); displayHelpAndExit(1); main.mqtt.setWillQos(QoS.values()[v]); } else if ("--will-retain".equals(arg)) { main.mqtt.setWillRetain(true); } else if ("-q".equals(arg)) { int v = Integer.parseInt(shift(argl)); if( v > QoS.values().length ) { stderr("Invalid qos value : " + v); displayHelpAndExit(1); qos = QoS.values()[v]; } else if ("-t".equals(arg)) { main.topics.add(new Topic(shift(argl), qos));
/** * Given a PUBLISH command determine if it will expect an ACK based on the * QoS of the Publish command and the QoS of this subscription. * * @param publish * The publish command to inspect. * * @return true if the client will expect an PUBACK for this PUBLISH. */ public boolean expectAck(PUBLISH publish) { QoS publishQoS = publish.qos(); if (publishQoS.compareTo(this.qos) > 0){ publishQoS = this.qos; } return !publishQoS.equals(QoS.AT_MOST_ONCE); }
private void restoreDurableQueue(List<ActiveMQQueue> queues) { try { for (ActiveMQQueue queue : queues) { String name = queue.getPhysicalName().substring(VIRTUALTOPIC_CONSUMER_PREFIX.length()); StringTokenizer tokenizer = new StringTokenizer(name); tokenizer.nextToken(":."); String qosString = tokenizer.nextToken(); tokenizer.nextToken(); String topicName = convertActiveMQToMQTT(tokenizer.nextToken("").substring(1)); QoS qoS = QoS.valueOf(qosString); LOG.trace("Restoring queue subscription: {}:{}", topicName, qoS); ConsumerInfo consumerInfo = new ConsumerInfo(getNextConsumerId()); consumerInfo.setDestination(queue); consumerInfo.setPrefetchSize(ActiveMQPrefetchPolicy.DEFAULT_QUEUE_PREFETCH); if (protocol.getActiveMQSubscriptionPrefetch() > 0) { consumerInfo.setPrefetchSize(protocol.getActiveMQSubscriptionPrefetch()); } consumerInfo.setRetroactive(true); consumerInfo.setDispatchAsync(true); doSubscribe(consumerInfo, topicName, qoS); // mark this durable subscription as restored by Broker restoredQueues.add(queue); } } catch (IOException e) { LOG.warn("Could not restore the MQTT queue subscriptions.", e); } }
public CONNECT willQos(QoS willQos) { this.willQos = (byte) willQos.ordinal(); return this; }
} else if ("--will-qos".equals(arg)) { int v = Integer.parseInt(shift(argl)); if( v > QoS.values().length ) { stderr("Invalid qos value : " + v); displayHelpAndExit(1); main.mqtt.setWillQos(QoS.values()[v]); } else if ("--will-retain".equals(arg)) { main.mqtt.setWillRetain(true); } else if ("-q".equals(arg)) { int v = Integer.parseInt(shift(argl)); if( v > QoS.values().length ) { stderr("Invalid qos value : " + v); displayHelpAndExit(1); main.qos = QoS.values()[v]; } else if ("-r".equals(arg)) { main.retain = true;