diff options
author | Ted Ross <tross@apache.org> | 2009-12-11 13:52:48 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2009-12-11 13:52:48 +0000 |
commit | fc7c0efc857cb6f6311bdf6bf6ddc30ff2048466 (patch) | |
tree | d3b9733ded2a50b3adb39e34ae56e0e8d05a7801 /cpp/src | |
parent | caaa1c00f62f11a1f046a7cf40583eedd2d873e3 (diff) | |
download | qpid-python-fc7c0efc857cb6f6311bdf6bf6ddc30ff2048466.tar.gz |
QPID-2245 QMF protocol changes will make 0.6 incompatible with 0.5
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@889619 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/qmf/engine/Protocol.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qmf/engine/SchemaImpl.cpp | 3 | ||||
-rw-r--r-- | cpp/src/qmf/engine/ValueImpl.cpp | 2 | ||||
-rw-r--r-- | cpp/src/qpid/agent/ManagementAgentImpl.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qpid/console/Broker.cpp | 4 | ||||
-rw-r--r-- | cpp/src/qpid/console/Schema.cpp | 2 | ||||
-rw-r--r-- | cpp/src/qpid/console/Value.cpp | 2 | ||||
-rw-r--r-- | cpp/src/qpid/framing/FieldTable.cpp | 134 | ||||
-rw-r--r-- | cpp/src/qpid/management/ManagementAgent.cpp | 6 |
9 files changed, 12 insertions, 149 deletions
diff --git a/cpp/src/qmf/engine/Protocol.cpp b/cpp/src/qmf/engine/Protocol.cpp index 6061b70a8d..9e5f490604 100644 --- a/cpp/src/qmf/engine/Protocol.cpp +++ b/cpp/src/qmf/engine/Protocol.cpp @@ -37,14 +37,14 @@ bool Protocol::checkHeader(Buffer& buf, uint8_t *opcode, uint32_t *seq) *opcode = buf.getOctet(); *seq = buf.getLong(); - return h1 == 'A' && h2 == 'M' && h3 == '3'; + return h1 == 'A' && h2 == 'M' && h3 == '2'; } void Protocol::encodeHeader(qpid::framing::Buffer& buf, uint8_t opcode, uint32_t seq) { buf.putOctet('A'); buf.putOctet('M'); - buf.putOctet('3'); + buf.putOctet('2'); buf.putOctet(opcode); buf.putLong (seq); } diff --git a/cpp/src/qmf/engine/SchemaImpl.cpp b/cpp/src/qmf/engine/SchemaImpl.cpp index e366a66826..c37ec34890 100644 --- a/cpp/src/qmf/engine/SchemaImpl.cpp +++ b/cpp/src/qmf/engine/SchemaImpl.cpp @@ -341,7 +341,6 @@ SchemaObjectClassImpl::SchemaObjectClassImpl(Buffer& buffer) : hasHash(true), cl buffer.getShortString(name); hash.decode(buffer); - /*uint8_t hasParentClass =*/ buffer.getOctet(); // TODO: Parse parent-class indicator uint16_t propCount = buffer.getShort(); uint16_t statCount = buffer.getShort(); uint16_t methodCount = buffer.getShort(); @@ -374,7 +373,7 @@ void SchemaObjectClassImpl::encode(Buffer& buffer) const buffer.putShortString(package); buffer.putShortString(name); hash.encode(buffer); - buffer.putOctet(0); // No parent class + //buffer.putOctet(0); // No parent class buffer.putShort((uint16_t) properties.size()); buffer.putShort((uint16_t) statistics.size()); buffer.putShort((uint16_t) methods.size()); diff --git a/cpp/src/qmf/engine/ValueImpl.cpp b/cpp/src/qmf/engine/ValueImpl.cpp index f80bdab866..1949d4b946 100644 --- a/cpp/src/qmf/engine/ValueImpl.cpp +++ b/cpp/src/qmf/engine/ValueImpl.cpp @@ -55,8 +55,6 @@ ValueImpl::ValueImpl(Typecode t, Buffer& buf) : typecode(t) case TYPE_MAP: ft.decode(buf); - // TODO: either update to recursively use QMF types or reduce to int/string/... - // (maybe use another ctor with a FieldValue argument) break; case TYPE_LIST: diff --git a/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/cpp/src/qpid/agent/ManagementAgentImpl.cpp index f9f39316e2..f84e158154 100644 --- a/cpp/src/qpid/agent/ManagementAgentImpl.cpp +++ b/cpp/src/qpid/agent/ManagementAgentImpl.cpp @@ -564,7 +564,7 @@ void ManagementAgentImpl::encodeHeader(Buffer& buf, uint8_t opcode, uint32_t seq { buf.putOctet('A'); buf.putOctet('M'); - buf.putOctet('3'); + buf.putOctet('2'); buf.putOctet(opcode); buf.putLong (seq); } @@ -581,7 +581,7 @@ bool ManagementAgentImpl::checkHeader(Buffer& buf, uint8_t *opcode, uint32_t *se *opcode = buf.getOctet(); *seq = buf.getLong(); - return h1 == 'A' && h2 == 'M' && h3 == '3'; + return h1 == 'A' && h2 == 'M' && h3 == '2'; } ManagementAgentImpl::PackageMap::iterator ManagementAgentImpl::findOrAddPackage(const string& name) diff --git a/cpp/src/qpid/console/Broker.cpp b/cpp/src/qpid/console/Broker.cpp index 53776c1a12..d2ff8f819e 100644 --- a/cpp/src/qpid/console/Broker.cpp +++ b/cpp/src/qpid/console/Broker.cpp @@ -72,7 +72,7 @@ void Broker::encodeHeader(Buffer& buf, uint8_t opcode, uint32_t seq) const { buf.putOctet('A'); buf.putOctet('M'); - buf.putOctet('3'); + buf.putOctet('2'); buf.putOctet(opcode); buf.putLong (seq); } @@ -89,7 +89,7 @@ bool Broker::checkHeader(Buffer& buf, uint8_t *opcode, uint32_t *seq) const *opcode = buf.getOctet(); *seq = buf.getLong(); - return h1 == 'A' && h2 == 'M' && h3 == '3'; + return h1 == 'A' && h2 == 'M' && h3 == '2'; } void Broker::received(qpid::client::Message& msg) diff --git a/cpp/src/qpid/console/Schema.cpp b/cpp/src/qpid/console/Schema.cpp index 7efdc63ef0..a3dbd91201 100644 --- a/cpp/src/qpid/console/Schema.cpp +++ b/cpp/src/qpid/console/Schema.cpp @@ -119,7 +119,7 @@ SchemaClass::SchemaClass(const uint8_t _kind, const ClassKey& _key, framing::Buf kind(_kind), key(_key) { if (kind == KIND_TABLE) { - uint8_t hasSupertype = buffer.getOctet(); + uint8_t hasSupertype = 0; //buffer.getOctet(); uint16_t propCount = buffer.getShort(); uint16_t statCount = buffer.getShort(); uint16_t methodCount = buffer.getShort(); diff --git a/cpp/src/qpid/console/Value.cpp b/cpp/src/qpid/console/Value.cpp index 799892606a..c30660f1dc 100644 --- a/cpp/src/qpid/console/Value.cpp +++ b/cpp/src/qpid/console/Value.cpp @@ -114,7 +114,7 @@ string MapValue::str() const MapValue::MapValue(framing::Buffer& buffer) { - value.qmfDecode(buffer); + value.decode(buffer); } diff --git a/cpp/src/qpid/framing/FieldTable.cpp b/cpp/src/qpid/framing/FieldTable.cpp index 0a21bb2f35..e2e91e450a 100644 --- a/cpp/src/qpid/framing/FieldTable.cpp +++ b/cpp/src/qpid/framing/FieldTable.cpp @@ -53,23 +53,6 @@ uint32_t FieldTable::encodedSize() const { return len; } -uint32_t FieldTable::qmfEncodedSize() const { - uint32_t len(4/*size field*/ + 4/*count field*/); - for(ValueMap::const_iterator i = values.begin(); i != values.end(); ++i) { - // shortstr_len_byte + key size + typecode - len += 1 + (i->first).size() + 1; - ValuePtr value(i->second); - if (value->convertsTo<int>()) { - len += 4; - } else if (value->convertsTo<uint64_t>()) { - len += 8; - } else if (value->convertsTo<string>()) { - len += 2 + value->get<string>().size(); - } - } - return len; -} - int FieldTable::count() const { return values.size(); } @@ -232,123 +215,6 @@ void FieldTable::decode(Buffer& buffer){ } } -#define QMF_TYPE_U8 1 -#define QMF_TYPE_U16 2 -#define QMF_TYPE_U32 3 -#define QMF_TYPE_U64 4 -#define QMF_TYPE_SSTR 6 -#define QMF_TYPE_LSTR 7 -#define QMF_TYPE_ABSTIME 8 -#define QMF_TYPE_DELTATIME 9 -#define QMF_TYPE_REF 10 -#define QMF_TYPE_BOOL 11 -#define QMF_TYPE_FLOAT 12 -#define QMF_TYPE_DOUBLE 13 -#define QMF_TYPE_UUID 14 -#define QMF_TYPE_S8 16 -#define QMF_TYPE_S16 17 -#define QMF_TYPE_S32 18 -#define QMF_TYPE_S64 19 -#define QMF_TYPE_OBJECT 20 -#define QMF_TYPE_MAP 15 -#define QMF_TYPE_LIST 21 -#define QMF_TYPE_ARRAY 22 - -void FieldTable::qmfEncode(Buffer& buffer) const { - buffer.putLong(qmfEncodedSize() - 4); - buffer.putLong(values.size()); - for (ValueMap::const_iterator i = values.begin(); i!=values.end(); ++i) { - ValuePtr value(i->second); - buffer.putShortString(i->first); - if (value->convertsTo<int>()) { - buffer.putOctet(QMF_TYPE_S32); - buffer.putLong(value->get<int>()); - } else if (value->convertsTo<uint64_t>()) { - buffer.putOctet(QMF_TYPE_U64); - buffer.putLongLong(value->get<uint64_t>()); - } else if (value->convertsTo<string>()) { - buffer.putOctet(QMF_TYPE_LSTR); - buffer.putMediumString(value->get<string>()); - } - } -} - -void FieldTable::qmfDecode(Buffer& buffer) { - clear(); - uint32_t len = buffer.getLong(); - if (len) { - uint32_t available = buffer.available(); - if (available < len) - throw IllegalArgumentException(QPID_MSG("Not enough data for field table.")); - uint32_t count = buffer.getLong(); - uint32_t leftover = available - len; - while(buffer.available() > leftover && count--) { - std::string name; - std::string sstr; - std::string lstr; - buffer.getShortString(name); - uint8_t typecode = buffer.getOctet(); - switch (typecode) { - case QMF_TYPE_U8: - values[name] = ValuePtr(new IntegerValue(buffer.getOctet())); - break; - case QMF_TYPE_U16: - values[name] = ValuePtr(new IntegerValue(buffer.getShort())); - break; - case QMF_TYPE_U32: - values[name] = ValuePtr(new IntegerValue(buffer.getLong())); - break; - case QMF_TYPE_U64: - values[name] = ValuePtr(new Unsigned64Value(buffer.getLongLong())); - break; - case QMF_TYPE_SSTR: - buffer.getShortString(sstr); - values[name] = ValuePtr(new Str16Value(sstr)); - break; - case QMF_TYPE_LSTR: - buffer.getMediumString(lstr); - values[name] = ValuePtr(new Str16Value(lstr)); - break; - case QMF_TYPE_ABSTIME: - values[name] = ValuePtr(new Unsigned64Value(buffer.getLongLong())); - break; - case QMF_TYPE_DELTATIME: - values[name] = ValuePtr(new Unsigned64Value(buffer.getLongLong())); - break; - case QMF_TYPE_BOOL: - values[name] = ValuePtr(new IntegerValue(buffer.getOctet())); - break; - case QMF_TYPE_FLOAT: - values[name] = ValuePtr(new FloatValue(buffer.getFloat())); - break; - case QMF_TYPE_DOUBLE: - values[name] = ValuePtr(new DoubleValue(buffer.getDouble())); - break; - case QMF_TYPE_S8: - values[name] = ValuePtr(new IntegerValue(buffer.getOctet())); - break; - case QMF_TYPE_S16: - values[name] = ValuePtr(new IntegerValue(buffer.getShort())); - break; - case QMF_TYPE_S32: - values[name] = ValuePtr(new IntegerValue(buffer.getLong())); - break; - case QMF_TYPE_S64: - values[name] = ValuePtr(new Unsigned64Value(buffer.getLongLong())); - break; - case QMF_TYPE_REF: - case QMF_TYPE_UUID: - case QMF_TYPE_OBJECT: - case QMF_TYPE_MAP: - case QMF_TYPE_LIST: - case QMF_TYPE_ARRAY: - break; - } - } - } -} - - bool FieldTable::operator==(const FieldTable& x) const { if (values.size() != x.values.size()) return false; for (ValueMap::const_iterator i = values.begin(); i != values.end(); ++i) { diff --git a/cpp/src/qpid/management/ManagementAgent.cpp b/cpp/src/qpid/management/ManagementAgent.cpp index 2193ba4007..b5ed4ed405 100644 --- a/cpp/src/qpid/management/ManagementAgent.cpp +++ b/cpp/src/qpid/management/ManagementAgent.cpp @@ -267,7 +267,7 @@ void ManagementAgent::encodeHeader (Buffer& buf, uint8_t opcode, uint32_t seq) { buf.putOctet ('A'); buf.putOctet ('M'); - buf.putOctet ('3'); + buf.putOctet ('2'); buf.putOctet (opcode); buf.putLong (seq); } @@ -281,7 +281,7 @@ bool ManagementAgent::checkHeader (Buffer& buf, uint8_t *opcode, uint32_t *seq) *opcode = buf.getOctet(); *seq = buf.getLong(); - return h1 == 'A' && h2 == 'M' && h3 == '3'; + return h1 == 'A' && h2 == 'M' && h3 == '2'; } void ManagementAgent::sendBuffer(Buffer& buf, @@ -1201,7 +1201,7 @@ size_t ManagementAgent::validateTableSchema(Buffer& inBuffer) inBuffer.getShortString(text); inBuffer.getBin128(hash); - uint8_t superType = inBuffer.getOctet(); + uint8_t superType = 0; //inBuffer.getOctet(); uint16_t propCount = inBuffer.getShort(); uint16_t statCount = inBuffer.getShort(); |