summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
authorGordon Sim <gsim@apache.org>2013-09-04 17:00:45 +0000
committerGordon Sim <gsim@apache.org>2013-09-04 17:00:45 +0000
commit4375c7091859f68b2cecc8b655dfc593af14bff7 (patch)
tree181db06e981cae8588fc7b84c4fea9e92d4b4884 /cpp/src
parent6786fbacb7013ec5c49e4bb7960d1f58fda17c09 (diff)
downloadqpid-python-4375c7091859f68b2cecc8b655dfc593af14bff7.tar.gz
QPID-5110: don't lose track of correct index even in the face of incorrectly typed properties
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1520066 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/qpid/amqp/MessageReader.cpp64
-rw-r--r--cpp/src/qpid/amqp/MessageReader.h14
2 files changed, 78 insertions, 0 deletions
diff --git a/cpp/src/qpid/amqp/MessageReader.cpp b/cpp/src/qpid/amqp/MessageReader.cpp
index 42faf9d08b..70374f4cd6 100644
--- a/cpp/src/qpid/amqp/MessageReader.cpp
+++ b/cpp/src/qpid/amqp/MessageReader.cpp
@@ -185,6 +185,70 @@ void MessageReader::PropertiesReader::onNull(const Descriptor*)
{
++index;
}
+void MessageReader::PropertiesReader::onBoolean(bool, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (boolean)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onUByte(uint8_t, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (ubyte)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onUShort(uint16_t, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (ushort)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onByte(int8_t, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (byte)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onShort(int16_t, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (short)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onInt(int32_t, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (int)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onLong(int64_t, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (long)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onFloat(float, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (float)");
+ ++index;
+}
+void MessageReader::PropertiesReader::onDouble(double, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (double)");
+ ++index;
+}
+bool MessageReader::PropertiesReader::onStartList(uint32_t /*count*/, const CharSequence& /*elements*/, const CharSequence& /*complete*/, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (list)");
+ ++index;
+ return false;
+}
+bool MessageReader::PropertiesReader::onStartMap(uint32_t /*count*/, const CharSequence& /*elements*/, const CharSequence& /*complete*/, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (map)");
+ ++index;
+ return false;
+}
+bool MessageReader::PropertiesReader::onStartArray(uint32_t /*count*/, const CharSequence&, const Constructor&, const Descriptor*)
+{
+ QPID_LOG(info, "skipping message property at index " << index << " unexpected type (array)");
+ ++index;
+ return false;
+}
+
//header, properties, amqp-sequence, amqp-value
bool MessageReader::onStartList(uint32_t count, const CharSequence& elements, const CharSequence& raw, const Descriptor* descriptor)
diff --git a/cpp/src/qpid/amqp/MessageReader.h b/cpp/src/qpid/amqp/MessageReader.h
index d4627d2aa5..4e2248070b 100644
--- a/cpp/src/qpid/amqp/MessageReader.h
+++ b/cpp/src/qpid/amqp/MessageReader.h
@@ -133,6 +133,20 @@ class MessageReader : public Reader
void onTimestamp(int64_t v, const Descriptor*); // absolute-expiry-time, creation-time
void onUInt(uint32_t v, const Descriptor*); // group-sequence
void onNull(const Descriptor*);
+
+ void onBoolean(bool, const Descriptor*);
+ void onUByte(uint8_t, const Descriptor*);
+ void onUShort(uint16_t, const Descriptor*);
+ void onByte(int8_t, const Descriptor*);
+ void onShort(int16_t, const Descriptor*);
+ void onInt(int32_t, const Descriptor*);
+ void onLong(int64_t, const Descriptor*);
+ void onFloat(float, const Descriptor*);
+ void onDouble(double, const Descriptor*);
+ bool onStartList(uint32_t /*count*/, const CharSequence& /*elements*/, const CharSequence& /*complete*/, const Descriptor*);
+ bool onStartMap(uint32_t /*count*/, const CharSequence& /*elements*/, const CharSequence& /*complete*/, const Descriptor*);
+ bool onStartArray(uint32_t /*count*/, const CharSequence&, const Constructor&, const Descriptor*);
+
private:
MessageReader& parent;
size_t index;