Author: gsim
Date: Fri Apr  5 17:07:57 2013
New Revision: 1465047

URL: http://svn.apache.org/r1465047
Log:
QPID-4716: set durability on terminus

Modified:
    qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp
    qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.h

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp?rev=1465047&r1=1465046&r2=1465047&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.cpp Fri Apr  5 
17:07:57 2013
@@ -51,6 +51,9 @@ const std::string NODE("node");
 const std::string LINK("link");
 const std::string CAPABILITIES("capabilities");
 const std::string PROPERTIES("properties");
+const std::string MODE("mode");
+const std::string BROWSE("browse");
+const std::string CONSUME("consume");
 
 const std::string TYPE("type");
 const std::string TOPIC("topic");
@@ -166,7 +169,13 @@ void flatten(Variant::Map& base, const s
 }
 }
 
-AddressHelper::AddressHelper(const Address& address) : 
isTemporary(AddressImpl::isTemporary(address)), name(address.getName()), 
type(address.getType())
+AddressHelper::AddressHelper(const Address& address) :
+    isTemporary(AddressImpl::isTemporary(address)),
+    name(address.getName()),
+    type(address.getType()),
+    durableNode(false),
+    durableLink(false),
+    browse(false)
 {
     bind(address, CREATE, createPolicy);
     bind(address, DELETE, deletePolicy);
@@ -177,6 +186,15 @@ AddressHelper::AddressHelper(const Addre
     bind(node, PROPERTIES, properties);
     bind(node, CAPABILITIES, capabilities);
     durableNode = test(node, DURABLE);
+    durableLink = test(link, DURABLE);
+    std::string mode;
+    if (bind(address, MODE, mode)) {
+        if (mode == BROWSE) {
+            browse = true;
+        } else if (mode != CONSUME) {
+            throw qpid::messaging::AddressError("Invalid value for mode; must 
be 'browse' or 'consume'.");
+        }
+    }
 
     if (!deletePolicy.empty()) {
         throw qpid::messaging::AddressError("Delete policies not supported 
over AMQP 1.0.");
@@ -289,6 +307,12 @@ void AddressHelper::configure(pn_terminu
         }
     }
     setCapabilities(terminus, createOnDemand);
+    if (durableLink) {
+        pn_terminus_set_durability(terminus, PN_DELIVERIES);
+    }
+    if (mode == FOR_RECEIVER && browse) {
+        //when PROTON-139 is resolved, set the required delivery-mode
+    }
 }
 
 void AddressHelper::setCapabilities(pn_terminus_t* terminus, bool create)

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.h
URL: 
http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.h?rev=1465047&r1=1465046&r2=1465047&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.h (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/AddressHelper.h Fri Apr  5 
17:07:57 2013
@@ -53,6 +53,8 @@ class AddressHelper
     std::string name;
     std::string type;
     bool durableNode;
+    bool durableLink;
+    bool browse;
 
     bool enabled(const std::string& policy, CheckMode mode) const;
     bool createEnabled(CheckMode mode) const;



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to