basic.get callbacks only have to be installed for a single message, so we uninstall it right after the message was handled

This commit is contained in:
Emiel Bruijntjes 2014-08-01 10:05:02 +02:00 committed by Richard Hodges
parent b4270f39bc
commit bcbe50e22c
1 changed files with 5 additions and 1 deletions

View File

@ -27,9 +27,13 @@ Deferred *DeferredGet::reportSuccess(uint32_t messageCount) const
// make copies of the callbacks
auto messageCallback = _messageCallback;
auto finalizeCallback = _finalizeCallback;
auto *channel = _channel;
// we now know the name, so we can install the message callback on the channel
_channel->install("", [messageCallback, finalizeCallback](const Message &message, uint64_t deliveryTag, bool redelivered) {
_channel->install("", [channel, messageCallback, finalizeCallback](const Message &message, uint64_t deliveryTag, bool redelivered) {
// we can remove the callback now from the channel
channel->uninstall("");
// call the callbacks
if (messageCallback) messageCallback(message, deliveryTag, redelivered);