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/08/13 17:06:43 UTC

svn commit: r1513536 [2/2] - in /qpid/trunk/qpid/cpp: examples/messaging/ include/qpid/messaging/ src/ src/qpid/amqp/ src/qpid/broker/amqp/ src/qpid/client/amqp0_10/ src/qpid/messaging/ src/qpid/messaging/amqp/ src/qpid/types/ src/tests/

Modified: qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp?rev=1513536&r1=1513535&r2=1513536&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp (original)
+++ qpid/trunk/qpid/cpp/src/qpid/messaging/amqp/SenderContext.cpp Tue Aug 13 15:06:42 2013
@@ -440,7 +440,15 @@ void SenderContext::Delivery::encode(con
         PropertiesAdapter properties(msg, address.getSubject());
         ApplicationPropertiesAdapter applicationProperties(msg.getHeaders());
         //compute size:
-        encoded.resize(qpid::amqp::MessageEncoder::getEncodedSize(header, properties, applicationProperties, msg.getBytes()));
+        size_t contentSize = qpid::amqp::MessageEncoder::getEncodedSize(header)
+            + qpid::amqp::MessageEncoder::getEncodedSize(properties)
+            + qpid::amqp::MessageEncoder::getEncodedSize(applicationProperties);
+        if (msg.getContent().isVoid()) {
+            contentSize += qpid::amqp::MessageEncoder::getEncodedSizeForContent(msg.getBytes());
+        } else {
+            contentSize += qpid::amqp::MessageEncoder::getEncodedSizeForValue(msg.getContent()) + 3/*descriptor*/;
+        }
+        encoded.resize(contentSize);
         QPID_LOG(debug, "Sending message, buffer is " << encoded.getSize() << " bytes")
         qpid::amqp::MessageEncoder encoder(encoded.getData(), encoded.getSize());
         //write header:
@@ -451,7 +459,12 @@ void SenderContext::Delivery::encode(con
         //write application-properties
         encoder.writeApplicationProperties(applicationProperties);
         //write body
-        if (msg.getBytes().size()) encoder.writeBinary(msg.getBytes(), &qpid::amqp::message::DATA);//structured content not yet directly supported
+        if (!msg.getContent().isVoid()) {
+            //write as AmqpValue
+            encoder.writeValue(msg.getContent(), &qpid::amqp::message::AMQP_VALUE);
+        } else if (msg.getBytes().size()) {
+            encoder.writeBinary(msg.getBytes(), &qpid::amqp::message::DATA);//structured content not yet directly supported
+        }
         if (encoder.getPosition() < encoded.getSize()) {
             QPID_LOG(debug, "Trimming buffer from " << encoded.getSize() << " to " << encoder.getPosition());
             encoded.trim(encoder.getPosition());

Added: qpid/trunk/qpid/cpp/src/qpid/types/encodings.h
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/qpid/types/encodings.h?rev=1513536&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/qpid/types/encodings.h (added)
+++ qpid/trunk/qpid/cpp/src/qpid/types/encodings.h Tue Aug 13 15:06:42 2013
@@ -0,0 +1,33 @@
+#ifndef QPID_TYPES_ENCODINGS_H
+#define QPID_TYPES_ENCODINGS_H
+
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+namespace qpid {
+namespace types {
+namespace encodings {
+const std::string BINARY("binary");
+const std::string UTF8("utf8");
+const std::string ASCII("ascii");
+}
+}} // namespace qpid::types
+
+#endif  /*!QPID_TYPES_ENCODINGS_H*/

Modified: qpid/trunk/qpid/cpp/src/tests/qpid-receive.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/qpid-receive.cpp?rev=1513536&r1=1513535&r2=1513536&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/qpid-receive.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/qpid-receive.cpp Tue Aug 13 15:06:42 2013
@@ -232,8 +232,10 @@ int main(int argc, char ** argv)
                             std::cout << "Properties: " << msg.getProperties() << std::endl;
                             std::cout << std::endl;
                         }
-                        if (opts.printContent)
-                            std::cout << msg.getContent() << std::endl;//TODO: handle map or list messages
+                        if (opts.printContent) {
+                            if (!msg.getContentObject().isVoid()) std::cout << msg.getContentObject() << std::endl;
+                            else std::cout << msg.getContent() << std::endl;
+                        }
                         if (opts.messages && count >= opts.messages) done = true;
                     }
                 }

Modified: qpid/trunk/qpid/cpp/src/tests/qpid-send.cpp
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/qpid-send.cpp?rev=1513536&r1=1513535&r2=1513536&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/qpid-send.cpp (original)
+++ qpid/trunk/qpid/cpp/src/tests/qpid-send.cpp Tue Aug 13 15:06:42 2013
@@ -262,9 +262,8 @@ class MapContentGenerator   : public Con
   public:
     MapContentGenerator(const Options& opt) : opts(opt) {}
     virtual bool setContent(Message& msg) {
-        Variant::Map map;
-        opts.setEntries(map);
-        encode(map, msg);
+        msg.getContentObject() = qpid::types::Variant::Map();
+        opts.setEntries(msg.getContentObject().asMap());
         return true;
     }
   private:



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org