don't call moved-from callbacks
This commit is contained in:
parent
fa1181aa63
commit
060e42a6dd
|
|
@ -219,7 +219,7 @@ public:
|
|||
_readyCallback = std::move(callback);
|
||||
|
||||
// direct call if channel is already ready
|
||||
if (_state == state_ready && callback) callback();
|
||||
if (_state == state_ready && _readyCallback) _readyCallback();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -270,7 +270,7 @@ public:
|
|||
_errorCallback = std::move(callback);
|
||||
|
||||
// if the object is already in a failed state, we call the callback right away
|
||||
if (_failed) callback("Frame could not be sent");
|
||||
if (_failed) _errorCallback("Frame could not be sent");
|
||||
|
||||
// allow chaining
|
||||
return *this;
|
||||
|
|
|
|||
|
|
@ -74,25 +74,25 @@ void ChannelImpl::onError(ErrorCallback&& callback)
|
|||
if (usable()) return;
|
||||
|
||||
// validity check
|
||||
if (!callback) return;
|
||||
if (!_errorCallback) return;
|
||||
|
||||
// is the channel closing down?
|
||||
if (_state == state_closing) return callback("Channel is closing down");
|
||||
if (_state == state_closing) return _errorCallback("Channel is closing down");
|
||||
|
||||
// the channel is closed, but what is the connection doing?
|
||||
if (_connection == nullptr) return callback("Channel is not linked to a connection");
|
||||
if (_connection == nullptr) return _errorCallback("Channel is not linked to a connection");
|
||||
|
||||
// if the connection is valid, this is a pure channel error
|
||||
if (_connection->ready()) return callback("Channel is in an error state, but the connection is valid");
|
||||
if (_connection->ready()) return _errorCallback("Channel is in an error state, but the connection is valid");
|
||||
|
||||
// the connection is closing down
|
||||
if (_connection->closing()) return callback("Channel is in an error state, the AMQP connection is closing down");
|
||||
if (_connection->closing()) return _errorCallback("Channel is in an error state, the AMQP connection is closing down");
|
||||
|
||||
// the connection is already closed
|
||||
if (_connection->closed()) return callback("Channel is in an error state, the AMQP connection has been closed");
|
||||
if (_connection->closed()) return _errorCallback("Channel is in an error state, the AMQP connection has been closed");
|
||||
|
||||
// direct call if channel is already in error state
|
||||
callback("Channel is in error state, something went wrong with the AMQP connection");
|
||||
_errorCallback("Channel is in error state, something went wrong with the AMQP connection");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -188,13 +188,13 @@ void Tagger::onError(ErrorCallback&& callback)
|
|||
_errorCallback = std::move(callback);
|
||||
|
||||
// check the callback
|
||||
if (!callback) return;
|
||||
if (!_errorCallback) return;
|
||||
|
||||
// if the channel is no longer usable, report that
|
||||
if (!_implementation->usable()) return callback("Channel is no longer usable");
|
||||
if (!_implementation->usable()) return _errorCallback("Channel is no longer usable");
|
||||
|
||||
// specify that we're already closing
|
||||
if (_close) callback("Wrapped channel is closing down");
|
||||
if (_close) _errorCallback("Wrapped channel is closing down");
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue