ProtonDeliveryImpl(Delivery delivery) { this.delivery = delivery; delivery.setContext(this); }
public void setDelivery( Delivery d ) { if (_delivery != null) { _delivery.setContext(null); } _delivery = d; if (_delivery != null) { _delivery.setContext(this); } updated(); }
public void setDelivery( Delivery d ) { if (_delivery != null) { _delivery.setContext(null); } _delivery = d; if (_delivery != null) { _delivery.setContext(this); } updated(); }
protected void onMessage(Delivery delivery, Buffer buffer) { MessageDelivery md = new MessageDelivery(buffer) { @Override AmqpLink link() { return AmqpReceiver.this; } @Override public void settle() { if( !delivery.isSettled() ) { delivery.disposition(new Accepted()); delivery.settle(); } drain(); } }; md.delivery = delivery; delivery.setContext(md); inbound.add(md); drainInbound(); }
private void processDelivery(Delivery incoming) throws Exception { doDeliveryInspection(incoming); Message message = null; try { message = decodeIncomingMessage(incoming); } catch (Exception e) { LOG.warn("Error on transform: {}", e.getMessage()); deliveryFailed(incoming, true); return; } AmqpMessage amqpMessage = new AmqpMessage(this, message, incoming); // Store reference to envelope in delivery context for recovery incoming.setContext(amqpMessage); prefetch.add(amqpMessage); // We processed a message, signal completion // of a message pull request if there is one. if (pullRequest != null) { pullRequest.onSuccess(); pullRequest = null; } }
final Delivery delivery; delivery = sender.delivery(tag, 0, tag.length); delivery.setContext(context);
public void declare(AmqpTransactionId txId, AsyncResult request) throws Exception { if (txId.getRemoteTxId() != null) { throw new IllegalStateException("Declare called while a TX is still Active."); } if (isClosed()) { request.onFailure(new JMSException("Cannot start new transaction: Coordinator remotely closed")); return; } Message message = Message.Factory.create(); Declare declare = new Declare(); message.setBody(new AmqpValue(declare)); Delivery pendingDelivery = getEndpoint().delivery(tagGenerator.getNextTag()); pendingDelivery.setContext(txId); // Store away for completion pendingDeliveries.add(pendingDelivery); pendingRequests.put(txId, request); sendTxCommand(message); }
delivery = sender.delivery(tag, 0, tag.length); delivery.setMessageFormat((int) message.getMessageFormat()); delivery.setContext(messageReference);
currentDelivery.setContext(md);
public void discharge(AmqpTransactionId txId, AsyncResult request, boolean commit) throws Exception { if (isClosed()) { Exception failureCause = null; if (commit) { failureCause = new TransactionRolledBackException("Transaction inbout: Coordinator remotely closed"); } else { failureCause = new JMSException("Rollback cannot complete: Coordinator remotely closed"); } request.onFailure(failureCause); return; } // Store the context of this action in the transaction ID for later completion. txId.setState(commit ? AmqpTransactionId.COMMIT_MARKER : AmqpTransactionId.ROLLBACK_MARKER); Message message = Message.Factory.create(); Discharge discharge = new Discharge(); discharge.setFail(!commit); discharge.setTxnId(txId.getRemoteTxId()); message.setBody(new AmqpValue(discharge)); Delivery pendingDelivery = getEndpoint().delivery(tagGenerator.getNextTag()); pendingDelivery.setContext(txId); // Store away for completion pendingDeliveries.add(pendingDelivery); pendingRequests.put(txId, request); sendTxCommand(message); }
private void doSend(AmqpMessage message, AsyncResult request, AmqpTransactionId txId) throws Exception { LOG.trace("Producer sending message: {}", message); Delivery delivery = null; if (presettle) { delivery = getEndpoint().delivery(EMPTY_BYTE_ARRAY, 0, 0); } else { byte[] tag = tagGenerator.getNextTag(); delivery = getEndpoint().delivery(tag, 0, tag.length); } delivery.setContext(request); Binary amqpTxId = null; if (txId != null) { amqpTxId = txId.getRemoteTxId(); } else if (session.isInTransaction()) { amqpTxId = session.getTransactionId().getRemoteTxId(); } if (amqpTxId != null) { TransactionalState state = new TransactionalState(); state.setTxnId(amqpTxId); delivery.disposition(state); } encodeAndSend(message.getWrappedMessage(), delivery); if (presettle) { delivery.settle(); request.onSuccess(); } else { pending.add(delivery); getEndpoint().advance(); } }
public void declare(JmsTransactionId txId, AsyncResult request) throws Exception { if (isClosed()) { request.onFailure(new JMSException("Cannot start new transaction: Coordinator remotely closed")); return; } if (txId.getProviderHint() != null) { throw new IllegalStateException("Declar called while a TX is still Active."); } Message message = Message.Factory.create(); Declare declare = new Declare(); message.setBody(new AmqpValue(declare)); ScheduledFuture<?> timeout = scheduleTimeoutIfNeeded("Timed out waiting for declare of TX.", request); OperationContext context = new OperationContext(txId, request, timeout); Delivery delivery = getEndpoint().delivery(tagGenerator.getNextTag()); delivery.setContext(context); sendTxCommand(message); }
public void declare(JmsTransactionId txId, AsyncResult request) throws Exception { if (isClosed()) { request.onFailure(new JMSException("Cannot start new transaction: Coordinator remotely closed")); return; } if (txId.getProviderHint() != null) { throw new IllegalStateException("Declar called while a TX is still Active."); } Message message = Message.Factory.create(); Declare declare = new Declare(); message.setBody(new AmqpValue(declare)); ScheduledFuture<?> timeout = scheduleTimeoutIfNeeded("Timed out waiting for declare of TX.", request); OperationContext context = new OperationContext(txId, request, timeout); Delivery delivery = getEndpoint().delivery(tagGenerator.getNextTag()); delivery.setContext(context); sendTxCommand(message); }
delivery = sender.delivery(tag, 0, tag.length); delivery.setMessageFormat((int) message.getMessageFormat()); delivery.setContext(messageReference);
incoming.setContext(envelope);
incoming.setContext(envelope);
delivery.setContext(send);
delivery.setContext(send);
public void discharge(JmsTransactionId txId, DischargeCompletion request) throws Exception { if (isClosed()) { Exception failureCause = null; if (request.isCommit()) { failureCause = new TransactionRolledBackException("Transaction inbout: Coordinator remotely closed"); } else { failureCause = new JMSException("Rollback cannot complete: Coordinator remotely closed"); } request.onFailure(failureCause); return; } if (txId.getProviderHint() == null) { throw new IllegalStateException("Discharge called with no active Transaction."); } // Store the context of this action in the transaction ID for later completion. txId.setProviderContext(request.isCommit() ? COMMIT_MARKER : ROLLBACK_MARKER); Message message = Message.Factory.create(); Discharge discharge = new Discharge(); discharge.setFail(!request.isCommit()); discharge.setTxnId((Binary) txId.getProviderHint()); message.setBody(new AmqpValue(discharge)); ScheduledFuture<?> timeout = scheduleTimeoutIfNeeded("Timed out waiting for discharge of TX.", request); OperationContext context = new OperationContext(txId, request, timeout); Delivery delivery = getEndpoint().delivery(tagGenerator.getNextTag()); delivery.setContext(context); sendTxCommand(message); }
public void discharge(JmsTransactionId txId, DischargeCompletion request) throws Exception { if (isClosed()) { Exception failureCause = null; if (request.isCommit()) { failureCause = new TransactionRolledBackException("Transaction inbout: Coordinator remotely closed"); } else { failureCause = new JMSException("Rollback cannot complete: Coordinator remotely closed"); } request.onFailure(failureCause); return; } if (txId.getProviderHint() == null) { throw new IllegalStateException("Discharge called with no active Transaction."); } // Store the context of this action in the transaction ID for later completion. txId.setProviderContext(request.isCommit() ? COMMIT_MARKER : ROLLBACK_MARKER); Message message = Message.Factory.create(); Discharge discharge = new Discharge(); discharge.setFail(!request.isCommit()); discharge.setTxnId((Binary) txId.getProviderHint()); message.setBody(new AmqpValue(discharge)); ScheduledFuture<?> timeout = scheduleTimeoutIfNeeded("Timed out waiting for discharge of TX.", request); OperationContext context = new OperationContext(txId, request, timeout); Delivery delivery = getEndpoint().delivery(tagGenerator.getNextTag()); delivery.setContext(context); sendTxCommand(message); }