summaryrefslogtreecommitdiff
path: root/qpid/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
commitfe743a0889c2b9aede7e449de12fe554fbf194dd (patch)
tree843dbe67fb0ac20fba93722df2af08642c861342 /qpid/cpp/src
parent4a00c2ea7b4cb66165092598508e2d12ac04d9b0 (diff)
downloadqpid-python-fe743a0889c2b9aede7e449de12fe554fbf194dd.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@1520066 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src')
-rw-r--r--qpid/cpp/src/qpid/amqp/MessageReader.cpp64
-rw-r--r--qpid/cpp/src/qpid/amqp/MessageReader.h14
2 files changed, 78 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/amqp/MessageReader.cpp b/qpid/cpp/src/qpid/amqp/MessageReader.cpp
index 42faf9d08b..70374f4cd6 100644
--- a/qpid/cpp/src/qpid/amqp/MessageReader.cpp
+++ b/qpid/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/qpid/cpp/src/qpid/amqp/MessageReader.h b/qpid/cpp/src/qpid/amqp/MessageReader.h
index d4627d2aa5..4e2248070b 100644
--- a/qpid/cpp/src/qpid/amqp/MessageReader.h
+++ b/qpid/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;