You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2013/06/26 18:12:21 UTC
svn commit: r1496985 - in /qpid/trunk/qpid/cpp/src:
qpid/client/amqp0_10/AddressResolution.cpp tests/MessagingSessionTests.cpp
Author: gsim
Date: Wed Jun 26 16:12:21 2013
New Revision: 1496985
URL: http://svn.apache.org/r1496985
Log:
QPID-4953: recognise temp queue shorthand in 0-10 codepath
Modified:
qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp
Modified: qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp?rev=1496985&r1=1496984&r2=1496985&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/client/amqp0_10/AddressResolution.cpp Wed Jun 26 16:12:21 2013
@@ -24,6 +24,7 @@
#include "qpid/client/amqp0_10/MessageSink.h"
#include "qpid/client/amqp0_10/OutgoingMessage.h"
#include "qpid/messaging/Address.h"
+#include "qpid/messaging/AddressImpl.h"
#include "qpid/messaging/Message.h"
#include "qpid/types/Variant.h"
#include "qpid/messaging/exceptions.h"
@@ -193,8 +194,8 @@ class Queue : protected Node
void checkDelete(qpid::client::AsyncSession&, CheckMode);
private:
const bool durable;
- const bool autoDelete;
- const bool exclusive;
+ bool autoDelete;
+ bool exclusive;
const std::string alternateExchange;
FieldTable arguments;
};
@@ -709,6 +710,11 @@ Queue::Queue(const Address& a) : Node(a)
(Opt(a)/NODE/X_DECLARE/ARGUMENTS).collect(arguments);
nodeBindings.setDefaultQueue(name);
linkBindings.setDefaultQueue(name);
+ if (qpid::messaging::AddressImpl::isTemporary(a) && createPolicy.isVoid()) {
+ createPolicy = "always";
+ autoDelete = true;
+ exclusive = true;
+ }
}
void Queue::checkCreate(qpid::client::AsyncSession& session, CheckMode mode)
Modified: qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp?rev=1496985&r1=1496984&r2=1496985&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/MessagingSessionTests.cpp Wed Jun 26 16:12:21 2013
@@ -521,7 +521,7 @@ struct DeletePolicyFixture : public Mess
void test(Mode mode)
{
- qpid::messaging::Address address("#; " + getPolicy(mode));
+ qpid::messaging::Address address("testqueue#; " + getPolicy(mode));
create(address);
Sender s = session.createSender(address);
@@ -1266,6 +1266,29 @@ QPID_AUTO_TEST_CASE(testConcurrentFetch)
BOOST_CHECK(fetcher.result);
}
+QPID_AUTO_TEST_CASE(testSimpleRequestResponse)
+{
+ QueueFixture fix;
+ //create receiver on temp queue for responses (using shorthand for temp queue)
+ Receiver r1 = fix.session.createReceiver("#");
+ //send request
+ Sender s1 = fix.session.createSender(fix.queue);
+ Message original("test-message");
+ original.setSubject("test-subject");
+ original.setReplyTo(r1.getAddress());
+ s1.send(original);
+
+ //receive request and send response
+ Receiver r2 = fix.session.createReceiver(fix.queue);
+ Message m = r2.fetch(Duration::SECOND * 5);
+ Sender s2 = fix.session.createSender(m.getReplyTo());
+ s2.send(m);
+ m = r1.fetch(Duration::SECOND * 5);
+ fix.session.acknowledge();
+ BOOST_CHECK_EQUAL(m.getContent(), original.getContent());
+ BOOST_CHECK_EQUAL(m.getSubject(), original.getSubject());
+}
+
QPID_AUTO_TEST_SUITE_END()
}} // namespace qpid::tests
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org