public DeliveryState getRemoteState() { return delivery==null ? null : delivery.getRemoteState(); }
public DeliveryState getRemoteState() { return delivery.getRemoteState(); }
@Override public boolean execute() { if (original == null) { if( delivery.getRemoteState()!=null ) { cb.onSuccess(delivery.getRemoteState()); watchingRemoteStateChange = false; return true; } } else { if( !original.equals(delivery.getRemoteState()) ) { cb.onSuccess(delivery.getRemoteState()); watchingRemoteStateChange = false; return true; } } return false; } });
public void onRemoteStateChange(final Callback<DeliveryState> cb) { watchingRemoteStateChange = true; final DeliveryState original = delivery.getRemoteState(); addWatch(new Watch() { @Override public boolean execute() { if (original == null) { if( delivery.getRemoteState()!=null ) { cb.onSuccess(delivery.getRemoteState()); watchingRemoteStateChange = false; return true; } } else { if( !original.equals(delivery.getRemoteState()) ) { cb.onSuccess(delivery.getRemoteState()); watchingRemoteStateChange = false; return true; } } return false; } }); }
@Override public boolean execute() { if( delivery!=null && delivery.isSettled() ) { cb.onSuccess(delivery.getRemoteState()); return true; } return false; } });
@Override public void onMessage(Delivery delivery) throws ActiveMQAMQPException { if (delivery.getRemoteState() instanceof Accepted) { if (delivery.getContext() instanceof FutureRunnable) { ((FutureRunnable) delivery.getContext()).countDown(); } } }
public void apply(Delivery d) { if (d.getLocalState() == null) { d.disposition(d.getRemoteState()); } d.settle(); } };
public void updated() { if (_delivery != null) { if (_delivery.getRemoteState() != null) { _status = _disp2status(_delivery.getRemoteState()); } else if (_delivery.remotelySettled()) { DeliveryState disp = _delivery.getLocalState(); if (disp == null) { _status = Status.SETTLED; } else { _status = _disp2status(_delivery.getLocalState()); } } else { _status = Status.PENDING; } } }
public void updated() { if (_delivery != null) { if (_delivery.getRemoteState() != null) { _status = _disp2status(_delivery.getRemoteState()); } else if (_delivery.remotelySettled()) { DeliveryState disp = _delivery.getLocalState(); if (disp == null) { _status = Status.SETTLED; } else { _status = _disp2status(_delivery.getLocalState()); } } else { _status = Status.PENDING; } } }
@Override public void processDeliveryUpdates(AmqpProvider provider, Delivery delivery) throws IOException { DeliveryState state = delivery.getRemoteState(); if (state != null) { InFlightSend send = (InFlightSend) delivery.getContext(); if (state.getType() == DeliveryStateType.Accepted) { LOG.trace("Outcome of delivery was accepted: {}", delivery); send.onSuccess(); } else { applyDeliveryStateUpdate(send, delivery, state); } } super.processDeliveryUpdates(provider, delivery); }
@Override public void inspectDeliveryUpdate(Sender sender, Delivery delivery) { if (delivery.remotelySettled()) { DeliveryState state = delivery.getRemoteState(); if (state instanceof TransactionalState) { LOG.debug("Remote settled with TX state: {}", state); } else { LOG.warn("Remote settled with non-TX state: {}", state); markAsInvalid("Remote did not settled with TransactionState."); } } } });
@Override public void processDeliveryUpdates(AmqpProvider provider, Delivery delivery) throws IOException { DeliveryState state = delivery.getRemoteState(); if (state != null) { InFlightSend send = (InFlightSend) delivery.getContext(); if (state.getType() == DeliveryStateType.Accepted) { LOG.trace("Outcome of delivery was accepted: {}", delivery); send.onSuccess(); } else { applyDeliveryStateUpdate(send, delivery, state); } } super.processDeliveryUpdates(provider, delivery); }
@Override public void onDelivery(Event event) { Delivery delivery = event.getDelivery(); while (delivery != null) { Sender sender = (Sender) delivery.getLink(); if (TRACE_LOGGER.isTraceEnabled()) { TRACE_LOGGER.trace( "onDelivery linkName[" + sender.getName() + "], unsettled[" + sender.getUnsettled() + "], credit[" + sender.getRemoteCredit() + "], deliveryState[" + delivery.getRemoteState() + "], delivery.isBuffered[" + delivery.isBuffered() + "], delivery.id[" + new String(delivery.getTag()) + "]"); } msgSender.onSendComplete(delivery); delivery.settle(); delivery = sender.current(); } }
@Override public void done() { connection.runLater(() -> { if (delivery.getRemoteState() instanceof TransactionalState) { TransactionalState txAccepted = new TransactionalState(); txAccepted.setOutcome(Accepted.getInstance()); txAccepted.setTxnId(((TransactionalState) delivery.getRemoteState()).getTxnId()); delivery.disposition(txAccepted); } else { delivery.disposition(Accepted.getInstance()); } delivery.settle(); context.flow(); connection.flush(); }); }
@Override public void done() { connection.lock(); try { if (delivery.getRemoteState() instanceof TransactionalState) { TransactionalState txAccepted = new TransactionalState(); txAccepted.setOutcome(Accepted.getInstance()); txAccepted.setTxnId(((TransactionalState) delivery.getRemoteState()).getTxnId()); delivery.disposition(txAccepted); } else { delivery.disposition(Accepted.getInstance()); } delivery.settle(); } finally { connection.unlock(); } connection.flush(); }
@Override public void onDelivery(Event event) { Delivery delivery = event.getDelivery(); while (delivery != null) { Sender sender = (Sender) delivery.getLink(); TRACE_LOGGER.debug("onDelivery: linkName:{}, unsettled:{}, credit:{}, deliveryState:{}, delivery.isBuffered:{}, delivery.tag:{}", sender.getName(), sender.getUnsettled(), sender.getRemoteCredit(), delivery.getRemoteState(), delivery.isBuffered(), delivery.getTag()); msgSender.onSendComplete(delivery); delivery.settle(); delivery = sender.current(); } }
Status getStatus(Tracker tracker) { Delivery delivery = getDelivery(tracker); if (delivery != null) { DeliveryState state = delivery.getRemoteState(); if (state != null) { return getStatus(state); } else if (delivery.remotelySettled() || delivery.isSettled()) { return getStatus(delivery.getLocalState()); } else { return Status.PENDING; } } else { return Status.UNKNOWN; } }
@Override public void onMessage(Delivery delivery) throws ActiveMQAMQPException { connection.requireInHandler(); Receiver receiver = ((Receiver) delivery.getLink()); if (receiver.current() != delivery) { return; } if (delivery.isAborted()) { // Aborting implicitly remotely settles, so advance // receiver to the next delivery and settle locally. receiver.advance(); delivery.settle(); // Replenish the credit if not doing a drain if (!receiver.getDrain()) { receiver.flow(1); } return; } else if (delivery.isPartial()) { return; } ReadableBuffer data = receiver.recv(); receiver.advance(); Transaction tx = null; if (delivery.getRemoteState() instanceof TransactionalState) { TransactionalState txState = (TransactionalState) delivery.getRemoteState(); tx = this.sessionSPI.getTransaction(txState.getTxnId(), false); } final Transaction txUsed = tx; actualDelivery(delivery, receiver, data, txUsed); }
@Override public void onDelivery(Event event) { //Codes_SRS_SERVICE_SDK_JAVA_AMQPSENDHANDLER_25_023: [ The event handler shall get the Delivery from the event only if the event type is DELIVERY **]** if(event.getType() == Event.Type.DELIVERY) { // Codes_SRS_AMQPSIOTHUBCONNECTION_15_038: [If this link is the Sender link and the event type is DELIVERY, the event handler shall get the Delivery (Proton) object from the event.] Delivery d = event.getDelivery(); //Codes_SRS_SERVICE_SDK_JAVA_AMQPSENDHANDLER_25_024: [ The event handler shall get the Delivery remote state from the delivery **]** DeliveryState remoteState = d.getRemoteState(); //Codes_SRS_SERVICE_SDK_JAVA_AMQPSENDHANDLER_25_025: [ The event handler shall verify the Amqp response and add the response to a queue. **]** sendStatusQueue.add(new AmqpResponseVerification(remoteState)); //Codes_SRS_SERVICE_SDK_JAVA_AMQPSENDHANDLER_25_026: [ The event handler shall settle the delivery. **]** d.settle(); //Codes_SRS_SERVICE_SDK_JAVA_AMQPSENDHANDLER_25_027: [ The event handler shall get the Sender (Proton) object from the event **]** Sender snd = event.getSender(); //Codes_SRS_SERVICE_SDK_JAVA_AMQPSENDHANDLER_25_028: [ The event handler shall close the Sender, Session and Connection **]** snd.close(); snd.getSession().close(); snd.getSession().getConnection().close(); isConnected = false; } }
@Override public void inspectDeliveryUpdate(Sender sender, Delivery delivery) { DeliveryState state = delivery.getRemoteState(); if (!delivery.remotelySettled()) { markAsInvalid("delivery is not remotely settled"); } if (state instanceof Rejected) { Rejected rejected = (Rejected) state; if (rejected.getError() == null || rejected.getError().getCondition() == null) { markAsInvalid("Delivery should have been Rejected with an error condition"); } else { ErrorCondition error = rejected.getError(); if (!error.getCondition().equals(AmqpError.UNAUTHORIZED_ACCESS)) { markAsInvalid("Should have been tagged with unauthorized access error"); } } } else { markAsInvalid("Delivery should have been Rejected"); } latch.countDown(); } });