diff options
Diffstat (limited to 'qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp')
-rw-r--r-- | qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp b/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp index 96c4437b89..fe74a4bca8 100644 --- a/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp +++ b/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp @@ -21,6 +21,7 @@ #include "qpid/messaging/amqp/SenderContext.h" #include "qpid/messaging/amqp/EncodedMessage.h" #include "qpid/messaging/amqp/AddressHelper.h" +#include "qpid/messaging/AddressImpl.h" #include "qpid/amqp/descriptors.h" #include "qpid/amqp/MessageEncoder.h" #include "qpid/messaging/exceptions.h" @@ -44,12 +45,12 @@ SenderContext::SenderContext(pn_session_t* session, const std::string& n, const SenderContext::~SenderContext() { - pn_link_free(sender); + //pn_link_free(sender); } void SenderContext::close() { - + pn_link_close(sender); } void SenderContext::setCapacity(uint32_t c) @@ -347,11 +348,16 @@ void SenderContext::configure() const } void SenderContext::configure(pn_terminus_t* target) const { - pn_terminus_set_address(target, address.getName().c_str()); - //dynamic create: AddressHelper helper(address); - if (helper.createEnabled(AddressHelper::FOR_SENDER)) { - helper.setNodeProperties(target); + if (AddressImpl::isTemporary(address)) { + //application expects a name to be generated + helper.setNodeProperties(target, true); + } else { + pn_terminus_set_address(target, address.getName().c_str()); + if (helper.createEnabled(AddressHelper::FOR_SENDER)) { + //application expects name of node to be as specified + helper.setNodeProperties(target, false); + } } } @@ -360,4 +366,9 @@ bool SenderContext::settled() return processUnsettled() == 0; } +Address SenderContext::getAddress() const +{ + return address; +} + }}} // namespace qpid::messaging::amqp |