/** * Whether the delivery was settled by the device. * * @return True if the device sends the message settled, false otherwise. */ boolean isRemotelySettled() { return delivery.remotelySettled(); }
/** * Updates this context's delivery state and settlement using the specified delivery. * * @param newDelivery The new delivery use to update this context's delivery. * * @return The new proton delivery. */ ProtonDelivery updateDelivery(final ProtonDelivery newDelivery) { return delivery.disposition(newDelivery.getRemoteState(), newDelivery.remotelySettled()); }
protected void forwardMessage(final ProtonSender sender, final Message msg, final ProtonDelivery delivery) { sender.send(msg, updatedDelivery -> delivery.disposition(updatedDelivery.getRemoteState(), updatedDelivery.remotelySettled())); }
private void sendMessage(final Message msg) { ByteBuffer b = ByteBuffer.allocate(4); b.putInt(count.getAndIncrement()); b.flip(); LOG.trace("sending message [id: {}] to peer", msg.getMessageId()); if (ProtonQoS.AT_MOST_ONCE.equals(sender.getQoS())) { sender.send(b.array(), msg); sentHandler.handle(null); } else { sender.send(b.array(), msg, res -> { if (Accepted.class.isInstance(res.getRemoteState())) { LOG.trace("message [id: {}, remotelySettled: {}] has been accepted by peer", msg.getMessageId(), res.remotelySettled()); res.settle(); if (sentHandler != null) { sentHandler.handle(null); } } else { LOG.warn("message [id: {}] has not been accepted by peer: {}", msg.getMessageId(), res.getRemoteState()); } }); } } }
private void forwardMessage(ProtonSender protonSender, ProtonReceiver protonReceiver, ProtonDelivery sourceDelivery, Message message) { MessageAnnotations annotations = message.getMessageAnnotations(); if (annotations == null) { annotations = new MessageAnnotations(Collections.singletonMap(replicated, true)); } else { annotations.getValue().put(replicated, true); } message.setMessageAnnotations(annotations); protonSender.send(message, protonDelivery -> { sourceDelivery.disposition(protonDelivery.getRemoteState(), protonDelivery.remotelySettled()); protonReceiver.flow(protonSender.getCredit() - protonReceiver.getCredit()); }); }
if (deliveryUpdated.remotelySettled()) { if (Accepted.class.isInstance(remoteState)) { LOG.trace("message [message ID: {}] accepted by peer", messageId);
if (delivery.remotelySettled()) {
@Override public final void onLinkAttach(final ProtonConnection con, final ProtonSender sender, final ResourceIdentifier targetResource) { if (ProtonQoS.AT_LEAST_ONCE.equals(sender.getRemoteQoS())) { final HonoUser user = Constants.getClientPrincipal(con); sender.setQoS(ProtonQoS.AT_LEAST_ONCE).open(); logger.debug("transferring token to client..."); final Message tokenMsg = ProtonHelper.message(user.getToken()); MessageHelper.addProperty(tokenMsg, AuthenticationConstants.APPLICATION_PROPERTY_TYPE, AuthenticationConstants.TYPE_AMQP_JWT); sender.send(tokenMsg, disposition -> { if (disposition.remotelySettled()) { logger.debug("successfully transferred auth token to client"); } else { logger.debug("failed to transfer auth token to client"); } sender.close(); }); } else { onLinkDetach(sender, ProtonHelper.condition(AmqpError.INVALID_FIELD, "supports AT_LEAST_ONCE delivery mode only")); } }
if (delivery.remotelySettled()) { if (Accepted.class.isInstance(remoteState)) { LOG.trace("device accepted command message [command: {}]", command.getName());
if (deliveryUpdated.remotelySettled()) { if (Accepted.class.isInstance(remoteState)) { currentSpan.log("message accepted by peer");
if (!delivery.remotelySettled()) { this.deliveries.put(amqpPublishData.messageId(), delivery); if (!delivery.remotelySettled()) { this.deliveries.put(message.getMessageId(), delivery);
} else if (sender.isOpen()) { if (sender.getCredit() <= 0) { if (delivery.remotelySettled()) {
return resource; case EVENT: if (delivery.remotelySettled()) { throw new ClientErrorException(HttpURLConnection.HTTP_BAD_REQUEST, "event endpoint accepts unsettled messages only");
if (!delivery.remotelySettled()) { this.deliveries.put(mqttPacketId, delivery);
final int remainingCredits = receiver.getCredit() - receiver.getQueued(); LOG.trace("handling message [remotely settled: {}, queued messages: {}, remaining credit: {}]", delivery.remotelySettled(), receiver.getQueued(), remainingCredits);
context.assertNotNull(delivery.getRemoteState(), "message " + msgNum + " had no remote state"); context.assertTrue(delivery.getRemoteState() instanceof Accepted, "message " + msgNum + " was not accepted"); context.assertTrue(delivery.remotelySettled(), "message " + msgNum + " was not settled");
context.assertNotNull(delivery.getRemoteState(), "message " + msgNum + " had no remote state"); context.assertTrue(delivery.getRemoteState() instanceof Accepted, "message " + msgNum + " was not accepted"); context.assertTrue(delivery.remotelySettled(), "message " + msgNum + " was not settled");
context.assertNotNull(delivery.getRemoteState(), "message had no remote state"); context.assertTrue(delivery.getRemoteState() instanceof Accepted, "message was not accepted"); context.assertTrue(delivery.remotelySettled(), "message was not settled");
context.assertNotNull(delivery.getRemoteState(), "message had no remote state"); context.assertTrue(delivery.getRemoteState() instanceof Accepted, "message was not accepted"); context.assertTrue(delivery.remotelySettled(), "message was not settled");
context.assertNotNull(delivery.getRemoteState(), "message had no remote state"); context.assertTrue(delivery.getRemoteState() instanceof Accepted, "message was not accepted"); context.assertTrue(delivery.remotelySettled(), "message was not settled");