receiver.detachHandler(x -> { receiver.detach(); receiver.free();
}); receiver.detachHandler(res-> { subscription.indicateError(new Exception("Link detached unexpectedly")); receiver.detach();
@Override public void cancel() { LOG.trace("Cancel called"); if(!cancelled.getAndSet(true)) { LOG.trace("Cancellation scheduled"); connCtx.runOnContext(x -> { LOG.trace("Cancelling"); receiver.closeHandler(y -> { indicateCompletion(); receiver.close(); }); receiver.detachHandler(y -> { indicateCompletion(); receiver.detach(); }); if(durable) { receiver.detach(); } else { receiver.close(); } }); } else { LOG.trace("Cancel no-op, already called."); } }
private void receiverHandler(ProtonReceiver receiver) { LOG.info("Attaching link request"); // the LWT service supports only the control address if (!receiver.getRemoteTarget().getAddress().equals(LWT_SERVICE_ENDPOINT)) { ErrorCondition errorCondition = new ErrorCondition(AmqpError.NOT_FOUND, "The provided address isn't supported"); receiver.setCondition(errorCondition) .close(); } else { receiver.setTarget(receiver.getRemoteTarget()) .setQoS(ProtonQoS.AT_LEAST_ONCE) .handler((delivery, message) -> { this.messageHandler(receiver, delivery, message); }) .closeHandler(ar -> { this.closeHandler(receiver, ar); }) .detachHandler(ar -> { this.closeHandler(receiver, ar); }) .setPrefetch(0) .open(); receiver.flow(AMQP_WILL_CREDITS); } }
.detachHandler(ar -> { this.processCloseReceiver(receiver); })