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:
parent
b4270f39bc
commit
bcbe50e22c
|
|
@ -27,9 +27,13 @@ Deferred *DeferredGet::reportSuccess(uint32_t messageCount) const
|
||||||
// make copies of the callbacks
|
// make copies of the callbacks
|
||||||
auto messageCallback = _messageCallback;
|
auto messageCallback = _messageCallback;
|
||||||
auto finalizeCallback = _finalizeCallback;
|
auto finalizeCallback = _finalizeCallback;
|
||||||
|
auto *channel = _channel;
|
||||||
|
|
||||||
// we now know the name, so we can install the message callback on the 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
|
// call the callbacks
|
||||||
if (messageCallback) messageCallback(message, deliveryTag, redelivered);
|
if (messageCallback) messageCallback(message, deliveryTag, redelivered);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue