@Override public Link getLink() { if (context instanceof Link) { return (Link) context; } else { Delivery dlv = getDelivery(); if (dlv == null) { return null; } return dlv.getLink(); } }
@Override public Link getLink() { if (context instanceof Link) { return (Link) context; } else { Delivery dlv = getDelivery(); if (dlv == null) { return null; } return dlv.getLink(); } }
public ProtonLinkImpl getLink() { return (ProtonLinkImpl) this.delivery.getLink().getContext(); }
public ProtonLinkImpl getLinkImpl() { return (ProtonLinkImpl) delivery.getLink().getContext(); }
@Override public void onDelivery(Delivery delivery) throws Exception { ProtonDeliveryHandler handler = (ProtonDeliveryHandler) delivery.getLink().getContext(); if (handler != null) { handler.onMessage(delivery); } else { log.warn("Handler is null, can't delivery " + delivery, new Exception("tracing location")); } } }
@Override public void onDelivery(Delivery delivery) throws Exception { ProtonDeliveryHandler handler = (ProtonDeliveryHandler) delivery.getLink().getContext(); if (handler != null) { handler.onMessage(delivery); } else { // TODO: logs System.err.println("Handler is null, can't delivery " + delivery); } }
@Override public void onDelivery(Delivery delivery) throws Exception { handler.requireHandler(); ProtonDeliveryHandler handler = (ProtonDeliveryHandler) delivery.getLink().getContext(); if (handler != null) { handler.onMessage(delivery); } else { log.warn("Handler is null, can't delivery " + delivery, new Exception("tracing location")); } } }
protected void processDelivery(Delivery delivery) throws Exception { if (!delivery.isPartial()) { Object context = delivery.getLink().getContext(); if (context instanceof AmqpLink) { AmqpLink amqpLink = (AmqpLink) context; amqpLink.delivery(delivery); } } }
protected void processDelivery(Delivery delivery) throws Exception { if (!delivery.isPartial()) { Object context = delivery.getLink().getContext(); if (context instanceof AmqpLink) { AmqpLink amqpLink = (AmqpLink) context; amqpLink.delivery(delivery); } } }
@Override public void processDelivery(Delivery delivery) { Attachment attachment = (Attachment) getTransport().context(delivery.getLink()).getAttachment(); AmqpLink link = (AmqpLink) attachment.endpoint(); link.processDelivery(delivery); }
public Message get() { for (Connector c : _driver.connectors()) { Connection connection = c.getConnection(); _logger.log(Level.FINE, "Attempting to get message from " + connection); Delivery delivery = connection.getWorkHead(); while (delivery != null) { if (delivery.isReadable()) { _logger.log(Level.FINE, "Readable delivery found: " + delivery); int size = read((Receiver) delivery.getLink()); Message message = new MessageImpl(); message.decode(_buffer, 0, size); _incoming.add(delivery); _distributed--; delivery.getLink().advance(); return message; } else { _logger.log(Level.FINE, "Delivery not readable: " + delivery); delivery = delivery.getWorkNext(); } } } return null; }
boolean checkSettled(Iterator<Delivery> unsettled) { if (unsettled != null) { while (unsettled.hasNext()) { Delivery d = unsettled.next(); if (d == null) { break; } if (d.getRemoteState() != null || d.remotelySettled()) { d.settle(); } else if (d.getLink().getSession().getConnection().getRemoteState() == EndpointState.CLOSED) { continue; } else { return false; } } } return true; } }
@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 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(); } }
@Override public void onDelivery(Event event) { synchronized (this.firstResponse) { if (this.isFirstResponse) { this.isFirstResponse = false; this.amqpReceiver.onOpenComplete(null); } } Delivery delivery = event.getDelivery(); Receiver receiveLink = (Receiver) delivery.getLink(); TRACE_LOGGER.debug("onDelivery: linkName:{}, updatedLinkCredit:{}, remoteCredit:{}, remoteCondition:{}, delivery.isPartial:{}", receiveLink.getName(), receiveLink.getCredit(), receiveLink.getRemoteCredit(), receiveLink.getRemoteCondition(), delivery.isPartial()); //TODO: What happens when a delivery has no message, but only disposition from the remote link? Like when ServiceBus service sends just a disposition to the receiver?" // If a message spans across deliveries (for ex: 200k message will be 4 frames (deliveries) 64k 64k 64k 8k), // all until "last-1" deliveries will be partial // reactor will raise onDelivery event for all of these - we only need the last one if (!delivery.isPartial()) { this.amqpReceiver.onReceiveComplete(delivery); } } }
Receiver receiver; try { receiver = ((Receiver) delivery.getLink());
@Override public Reactor getReactor() { if (context instanceof Reactor) { return (Reactor) context; } else if (context instanceof Task) { return ((Task)context).getReactor(); } else if (context instanceof Transport) { return ((TransportImpl)context).getReactor(); } else if (context instanceof Delivery) { return ((Delivery)context).getLink().getSession().getConnection().getReactor(); } else if (context instanceof Link) { return ((Link)context).getSession().getConnection().getReactor(); } else if (context instanceof Session) { return ((Session)context).getConnection().getReactor(); } else if (context instanceof Connection) { return ((Connection)context).getReactor(); } else if (context instanceof Selectable) { return ((Selectable)context).getReactor(); } return null; }
@Override public Reactor getReactor() { if (context instanceof Reactor) { return (Reactor) context; } else if (context instanceof Task) { return ((Task)context).getReactor(); } else if (context instanceof Transport) { return ((TransportImpl)context).getReactor(); } else if (context instanceof Delivery) { return ((Delivery)context).getLink().getSession().getConnection().getReactor(); } else if (context instanceof Link) { return ((Link)context).getSession().getConnection().getReactor(); } else if (context instanceof Session) { return ((Session)context).getConnection().getReactor(); } else if (context instanceof Connection) { return ((Connection)context).getReactor(); } else if (context instanceof Selectable) { return ((Selectable)context).getReactor(); } return null; }
if (delivery.isReadable() && !delivery.isPartial() && delivery.getLink().getName().equals(RECEIVE_TAG))
@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); }