Skip to content

Commit

Permalink
Rewind new strategy for freeing links.
Browse files Browse the repository at this point in the history
A corrected implementation will be provided afterwards.

Signed-off-by: Karsten Frank <Karsten.Frank@bosch-si.com>
  • Loading branch information
sysexcontrol committed Aug 20, 2018
1 parent bfe04e7 commit 53cb630
Showing 1 changed file with 24 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -242,19 +242,37 @@ protected final void closeLinks(final Handler<AsyncResult<Void>> closeHandler) {
if (sender == null) {
senderCloseHandler.complete();
} else {
sender.close();
// free resources even if remote peer did not reply with a detach frame
sender.free();
final Handler<AsyncResult<ProtonSender>> wrappedHandler = HonoProtonHelper.setCloseHandler(sender, closeAttempt -> {
LOG.debug("closed message sender for [{}]", sender.getTarget().getAddress());
senderCloseHandler.complete();
});
if (sender.isOpen()) {
// wait for peer's detach frame to trigger the handler
sender.close();
} else {
// trigger handler manually to make sure that
// resources are freed up
wrappedHandler.handle(Future.succeededFuture());
}
}

senderCloseHandler.compose(closedSender -> {

if (receiver == null) {
result.complete((Void) null);
} else {
receiver.close();
// free resources even if remote peer did not reply with a detach frame
receiver.free();
final Handler<AsyncResult<ProtonReceiver>> wrappedHandler = HonoProtonHelper.setCloseHandler(receiver, closeAttempt -> {
LOG.debug("closed message consumer for [{}]", receiver.getSource().getAddress());
result.complete((Void) null);
});
if (receiver.isOpen()) {
// wait for peer's detach frame to trigger the handler
receiver.close();
} else {
// trigger handler manually to make sure that
// resources are freed up
wrappedHandler.handle(Future.succeededFuture());
}
}

}, result);
Expand Down

0 comments on commit 53cb630

Please sign in to comment.