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