diff options
author | Ted Ross <tross@apache.org> | 2009-12-10 18:19:38 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2009-12-10 18:19:38 +0000 |
commit | 7e51d0a18d8ee7d4a19ab64ecb4b0d9dd03b1f73 (patch) | |
tree | d06d4fcbb01f0d6be13fe0841f50021fa86b910c | |
parent | fa9e8e49efd9ebea4aaedce3c2753bd578e7cae8 (diff) | |
download | qpid-python-7e51d0a18d8ee7d4a19ab64ecb4b0d9dd03b1f73.tar.gz |
QPID-2245 patch (applied to qmfv2 branch).
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qmfv2@889354 13f79535-47bb-0310-9956-ffa450edef68
26 files changed, 59 insertions, 362 deletions
diff --git a/qpid/cpp/include/qpid/framing/FieldTable.h b/qpid/cpp/include/qpid/framing/FieldTable.h index fd09cfc6f6..62b4a4bc08 100644 --- a/qpid/cpp/include/qpid/framing/FieldTable.h +++ b/qpid/cpp/include/qpid/framing/FieldTable.h @@ -63,10 +63,6 @@ class FieldTable QPID_COMMON_EXTERN void encode(Buffer& buffer) const; QPID_COMMON_EXTERN void decode(Buffer& buffer); - QPID_COMMON_EXTERN uint32_t qmfEncodedSize() const; - QPID_COMMON_EXTERN void qmfEncode(Buffer& buffer) const; - QPID_COMMON_EXTERN void qmfDecode(Buffer& buffer); - QPID_COMMON_EXTERN int count() const; QPID_COMMON_EXTERN void set(const std::string& name, const ValuePtr& value); QPID_COMMON_EXTERN ValuePtr get(const std::string& name) const; diff --git a/qpid/cpp/managementgen/qmfgen/management-types.xml b/qpid/cpp/managementgen/qmfgen/management-types.xml index e235920447..626880afb3 100644 --- a/qpid/cpp/managementgen/qmfgen/management-types.xml +++ b/qpid/cpp/managementgen/qmfgen/management-types.xml @@ -36,7 +36,7 @@ <type name="float" base="FLOAT" cpp="float" encode="@.putFloat(#)" decode="# = @.getFloat()" accessor="direct" init="0."/> <type name="double" base="DOUBLE" cpp="double" encode="@.putDouble(#)" decode="# = @.getDouble()" accessor="direct" init="0."/> <type name="uuid" base="UUID" cpp="::qpid::framing::Uuid" encode="#.encode(@)" decode="#.decode(@)" accessor="direct" init="::qpid::framing::Uuid()" byRef="y"/> -<type name="map" base="FTABLE" cpp="::qpid::framing::FieldTable" encode="#.qmfEncode(@)" decode="#.decode(@)" accessor="direct" init="::qpid::framing::FieldTable()" byRef="y"/> +<type name="map" base="FTABLE" cpp="::qpid::framing::FieldTable" encode="#.encode(@)" decode="#.decode(@)" accessor="direct" init="::qpid::framing::FieldTable()" byRef="y"/> <type name="hilo8" base="U8" cpp="uint8_t" encode="@.putOctet(#)" decode="# = @.getOctet()" style="wm" accessor="counter" init="0"/> <type name="hilo16" base="U16" cpp="uint16_t" encode="@.putShort(#)" decode="# = @.getShort()" style="wm" accessor="counter" init="0"/> diff --git a/qpid/cpp/managementgen/qmfgen/templates/Class.cpp b/qpid/cpp/managementgen/qmfgen/templates/Class.cpp index 52ffce0eb4..973d92586a 100644 --- a/qpid/cpp/managementgen/qmfgen/templates/Class.cpp +++ b/qpid/cpp/managementgen/qmfgen/templates/Class.cpp @@ -98,7 +98,6 @@ void /*MGEN:Class.NameCap*/::writeSchema (Buffer& buf) buf.putShortString (packageName); // Package Name buf.putShortString (className); // Class Name buf.putBin128 (md5Sum); // Schema Hash - buf.putOctet (0); // No Superclass buf.putShort (/*MGEN:Class.ConfigCount*/); // Config Element Count buf.putShort (/*MGEN:Class.InstCount*/); // Inst Element Count buf.putShort (/*MGEN:Class.MethodCount*/); // Method Count diff --git a/qpid/cpp/src/qmf/engine/Protocol.cpp b/qpid/cpp/src/qmf/engine/Protocol.cpp index 6061b70a8d..9e5f490604 100644 --- a/qpid/cpp/src/qmf/engine/Protocol.cpp +++ b/qpid/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/qpid/cpp/src/qmf/engine/SchemaImpl.cpp b/qpid/cpp/src/qmf/engine/SchemaImpl.cpp index e366a66826..c37ec34890 100644 --- a/qpid/cpp/src/qmf/engine/SchemaImpl.cpp +++ b/qpid/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/qpid/cpp/src/qmf/engine/ValueImpl.cpp b/qpid/cpp/src/qmf/engine/ValueImpl.cpp index f80bdab866..1949d4b946 100644 --- a/qpid/cpp/src/qmf/engine/ValueImpl.cpp +++ b/qpid/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/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp b/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp index f9f39316e2..f84e158154 100644 --- a/qpid/cpp/src/qpid/agent/ManagementAgentImpl.cpp +++ b/qpid/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/qpid/cpp/src/qpid/console/Broker.cpp b/qpid/cpp/src/qpid/console/Broker.cpp index 53776c1a12..d2ff8f819e 100644 --- a/qpid/cpp/src/qpid/console/Broker.cpp +++ b/qpid/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/qpid/cpp/src/qpid/console/Schema.cpp b/qpid/cpp/src/qpid/console/Schema.cpp index 7efdc63ef0..a3dbd91201 100644 --- a/qpid/cpp/src/qpid/console/Schema.cpp +++ b/qpid/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/qpid/cpp/src/qpid/console/Value.cpp b/qpid/cpp/src/qpid/console/Value.cpp index 799892606a..c30660f1dc 100644 --- a/qpid/cpp/src/qpid/console/Value.cpp +++ b/qpid/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/qpid/cpp/src/qpid/framing/FieldTable.cpp b/qpid/cpp/src/qpid/framing/FieldTable.cpp index 0a21bb2f35..e2e91e450a 100644 --- a/qpid/cpp/src/qpid/framing/FieldTable.cpp +++ b/qpid/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/qpid/cpp/src/qpid/management/ManagementAgent.cpp b/qpid/cpp/src/qpid/management/ManagementAgent.cpp index 2193ba4007..b5ed4ed405 100644 --- a/qpid/cpp/src/qpid/management/ManagementAgent.cpp +++ b/qpid/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(); diff --git a/qpid/dotnet/client-010/management/console/Broker.cs b/qpid/dotnet/client-010/management/console/Broker.cs index 2d2bedf110..7684da9e12 100644 --- a/qpid/dotnet/client-010/management/console/Broker.cs +++ b/qpid/dotnet/client-010/management/console/Broker.cs @@ -165,7 +165,7 @@ namespace org.apache.qpid.console public IEncoder SetHeader(IEncoder enc, char opcode, long sequence) { enc.WriteUint8((short)'A') ; enc.WriteUint8((short)'M') ; - enc.WriteUint8((short)'3') ; + enc.WriteUint8((short)'2') ; enc.WriteUint8((short)opcode) ; enc.WriteUint32(sequence) ; return enc ; @@ -219,7 +219,7 @@ namespace org.apache.qpid.console return returnValue ; } character = (char) decoder.ReadUint8() ; - if (character != '3') { + if (character != '2') { return returnValue ; } returnValue = true ; diff --git a/qpid/dotnet/client-010/management/console/SchemaClass.cs b/qpid/dotnet/client-010/management/console/SchemaClass.cs index 653221034d..320312b61d 100644 --- a/qpid/dotnet/client-010/management/console/SchemaClass.cs +++ b/qpid/dotnet/client-010/management/console/SchemaClass.cs @@ -60,7 +60,7 @@ namespace org.apache.qpid.console Kind = kind ; Session = session ; this.Key = key ; - bool hasSupertype = !(dec.ReadUint8().Equals(0)) ; + bool hasSupertype = false ; if (kind == CLASS_KIND_TABLE) { int propCount = dec.ReadUint16() ; diff --git a/qpid/dotnet/client-010/management/console/Session.cs b/qpid/dotnet/client-010/management/console/Session.cs index cdc30e482b..d9c5948e57 100644 --- a/qpid/dotnet/client-010/management/console/Session.cs +++ b/qpid/dotnet/client-010/management/console/Session.cs @@ -616,21 +616,7 @@ namespace org.apache.qpid.console case 12: return dec.ReadFloat() ; // float case 13: return dec.ReadDouble() ; // double case 14: return dec.ReadUuid() ; // UUID - case 15: // Ftable - Dictionary<string, object> ftable = new Dictionary<string, object>() ; - MSDecoder sc = new MSDecoder() ; - sc.Init(new MemoryStream(dec.ReadVbin32())) ; - if (sc.HasRemaining()) { - long count = sc.ReadUint32() ; - while (count > 0) { - string key = sc.ReadStr8() ; - short code = sc.ReadUint8() ; - object newValue = this.DecodeValue(sc, code) ; - ftable.Add(key, newValue) ; - count -= 1 ; - } - } - return ftable ; + case 15: return dec.ReadMap() ; // Ftable case 16: return dec.ReadInt8() ; // int8 case 17: return dec.ReadInt16() ; // int16 case 18: return dec.ReadInt32() ; // int32 @@ -709,21 +695,7 @@ namespace org.apache.qpid.console case 12: enc.WriteFloat((float) val); break; // FLOAT case 13: enc.WriteDouble((double) val); break; // DOUBLE case 14: enc.WriteUuid((UUID) val) ; break ; // UUID - case 15: // Ftable - Dictionary<string, object> ftable = (Dictionary<string, object>) val ; - MSEncoder sc = new MSEncoder(1) ; - sc.Init() ; - sc.WriteUint32(ftable.Count) ; - foreach (String key in ftable.Keys) { - object obj = ftable[key] ; - short innerType = Util.QMFType(obj) ; - sc.WriteStr8(key) ; - sc.WriteUint8(innerType) ; - this.EncodeValue(sc,innerType,obj) ; - } - byte[] bytes = sc.Segment().ToArray() ; - enc.WriteVbin32(bytes) ; - break ; + case 15: enc.WriteMap((Dictionary<string, object>) val) ; break ; // Ftable case 16: enc.WriteInt8((short) val) ; break; // int8 case 17: enc.WriteInt16((int) val) ; break; // int16 case 18: enc.WriteInt32(long.Parse(""+ val)) ; break; // int32 diff --git a/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/Agent.java b/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/Agent.java index 40797d51f9..f6ae6adbc3 100644 --- a/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/Agent.java +++ b/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/Agent.java @@ -239,7 +239,7 @@ public class Agent implements MessageListener throw new AgentException(e); } byte[] magic = dec.readBytes(3); - if (magic[0] != 'A' || magic[1] != 'M' || magic[2] != '3') + if (magic[0] != 'A' || magic[1] != 'M' || magic[2] != '2') { throw new AgentException("bad magic: " + new String(magic)); } @@ -475,7 +475,7 @@ public class Agent implements MessageListener enc.init(); enc.writeUint8((short) 'A'); enc.writeUint8((short) 'M'); - enc.writeUint8((short) '3'); + enc.writeUint8((short) '2'); enc.writeUint8((short) opcode); enc.writeUint32(sequence); return enc; diff --git a/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java b/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java index 7c324fadb9..0a74958023 100644 --- a/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java +++ b/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/ClassBinding.java @@ -356,13 +356,13 @@ public class ClassBinding implements TypeBinding enc.writeStr8(name); enc.writeBin128(this.getSchemaHash()); // schema hash // Send true (1) if we have a super-type - if (superType == null) - { - enc.writeUint8((short) 0); - } else - { - enc.writeUint8((short) 1); - } + //if (superType == null) + //{ + // enc.writeUint8((short) 0); + //} else + //{ + // enc.writeUint8((short) 1); + //} enc.writeUint16(properties.size()); // Events do not have the method size sent if (kind == 1) @@ -371,12 +371,12 @@ public class ClassBinding implements TypeBinding enc.writeUint16(methods.size()); } // Add the super type information if we have it - if (superType != null) - { - enc.writeStr8(superType.pkg); - enc.writeStr8(superType.name); - enc.writeBin128(superType.getSchemaHash()); // schema hash - } + //if (superType != null) + //{ + // enc.writeStr8(superType.pkg); + // enc.writeStr8(superType.name); + // enc.writeBin128(superType.getSchemaHash()); // schema hash + //} for (PropertyBinding p : properties) { log.trace("encoding property " + p.getName()); diff --git a/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java b/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java index 80889f3b4e..02d562a59a 100644 --- a/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java +++ b/qpid/java/management/agent/src/main/java/org/apache/qpid/agent/binding/MapBinding.java @@ -49,53 +49,12 @@ public class MapBinding implements TypeBinding public void encode(Encoder enc, Object value) { Map map = (Map) value; - BBEncoder newEncoder = new BBEncoder(10); - newEncoder.writeUint32(map.size()); - for (Object key : map.keySet()) - { - String keyString = key.toString(); - Object mapValue = map.get(key); - TypeBinding binding = bctx.getTypeBinding(mapValue.getClass()); - newEncoder.writeStr8(keyString); - newEncoder.writeUint8(binding.getCode()); - binding.encode(newEncoder, mapValue); - } - enc.writeVbin32(newEncoder.buffer().array()); + enc.writeMap(map); } public Object decode(Decoder dec) { - Map map = null; - try - { - if (javaClass.isInterface()) - { - map = new HashMap(); - } else - { - map = (Map) javaClass.newInstance(); - } - } catch (Exception e) - { - throw new BindingException( - "Could not create a Map implementation for " - + javaClass.getName(), e); - } - BBDecoder newDecoder = new BBDecoder(); - newDecoder.init(ByteBuffer.wrap(dec.readVbin32())); - long count = newDecoder.readUint32(); - while (count > 0) - { - String key = newDecoder.readStr8(); - short typeCode = newDecoder.readUint8(); - TypeBinding type = QMFTypeBinding.getType(typeCode); - if (type == null) - { - type = bctx.getTypeBinding(Object.class); - } - map.put(key, type.decode(newDecoder)); - count -= 1; - } + Map map = dec.readMap(); return map; } diff --git a/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java b/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java index 48ef10f60a..c1b1ceb5b4 100644 --- a/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java +++ b/qpid/java/management/client/src/main/java/org/apache/qpid/management/Protocol.java @@ -27,7 +27,7 @@ package org.apache.qpid.management; */ public interface Protocol { - String MAGIC_NUMBER = "AM3"; + String MAGIC_NUMBER = "AM2"; char SCHEMA_REQUEST_OPCODE = 'S'; char SCHEMA_RESPONSE_OPCODE = Character.toLowerCase(SCHEMA_REQUEST_OPCODE); diff --git a/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java b/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java index e05bcee820..4564acc9d0 100644 --- a/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java +++ b/qpid/java/management/client/src/main/java/org/apache/qpid/management/domain/handler/impl/SchemaResponseMessageHandler.java @@ -69,17 +69,10 @@ public class SchemaResponseMessageHandler extends BaseMessageHandler Binary schemaHash = new Binary(decoder.readBin128()); - int hasSuperclass = decoder.readUint8(); int howManyProperties = decoder.readUint16(); int howManyStatistics = decoder.readUint16(); int howManyMethods = decoder.readUint16(); - if (hasSuperclass != 0) { - String parentPackageName = decoder.readStr8(); - String parentClassName = decoder.readStr8(); - Binary parentHash = new Binary(decoder.readBin128()); - } - _domainModel.addSchema( packageName, className, diff --git a/qpid/java/management/console/src/main/java/org/apache/qpid/console/Broker.java b/qpid/java/management/console/src/main/java/org/apache/qpid/console/Broker.java index 8c71925f4e..2ea2ab8a70 100644 --- a/qpid/java/management/console/src/main/java/org/apache/qpid/console/Broker.java +++ b/qpid/java/management/console/src/main/java/org/apache/qpid/console/Broker.java @@ -111,7 +111,7 @@ public class Broker implements MessageListener return returnValue; } character = (char) decoder.readUint8(); - if (character != '3') + if (character != '2') { return returnValue; } @@ -349,7 +349,7 @@ public class Broker implements MessageListener { enc.writeUint8((short) 'A'); enc.writeUint8((short) 'M'); - enc.writeUint8((short) '3'); + enc.writeUint8((short) '2'); enc.writeUint8((short) opcode); enc.writeUint32(sequence); return enc; @@ -502,4 +502,4 @@ public class Broker implements MessageListener } } } -}
\ No newline at end of file +} diff --git a/qpid/java/management/console/src/main/java/org/apache/qpid/console/SchemaClass.java b/qpid/java/management/console/src/main/java/org/apache/qpid/console/SchemaClass.java index 783a4b4b86..a0faa6c73d 100644 --- a/qpid/java/management/console/src/main/java/org/apache/qpid/console/SchemaClass.java +++ b/qpid/java/management/console/src/main/java/org/apache/qpid/console/SchemaClass.java @@ -43,7 +43,7 @@ public class SchemaClass setKind(kind);
setSession(session);
this.setKey(key);
- boolean hasSupertype = dec.readUint8() != 0;
+ boolean hasSupertype = false; //dec.readUint8() != 0;
if (kind == CLASS_KIND_TABLE)
{
int propCount = dec.readUint16();
@@ -248,4 +248,4 @@ public class SchemaClass {
this.classKey = classKey;
}
-}
\ No newline at end of file +}
diff --git a/qpid/java/management/console/src/main/java/org/apache/qpid/console/Session.java b/qpid/java/management/console/src/main/java/org/apache/qpid/console/Session.java index cb2e39c15f..822f215f4d 100644 --- a/qpid/java/management/console/src/main/java/org/apache/qpid/console/Session.java +++ b/qpid/java/management/console/src/main/java/org/apache/qpid/console/Session.java @@ -189,22 +189,7 @@ public class Session case 14: // UUID
return dec.readUuid();
case 15: // Ftable
- java.util.HashMap<String, Object> ftable = new java.util.HashMap<String, Object>();
- BBDecoder sc = new BBDecoder();
- sc.init(ByteBuffer.wrap(dec.readVbin32()));
- if (sc.hasRemaining())
- {
- long count = sc.readUint32();
- while (count > 0)
- {
- String key = sc.readStr8();
- short code = sc.readUint8();
- Object newValue = this.decodeValue(sc, code);
- ftable.put(key, newValue);
- count -= 1;
- }
- }
- return ftable;
+ return dec.readMap();
case 16: // int8
return dec.readInt8();
case 17: // int16
@@ -317,20 +302,7 @@ public class Session enc.writeUuid((UUID) val);
break;
case 15: // Ftable
- Map<String, Object> ftable = (Map<String, Object>) val;
- BBEncoder sc = new BBEncoder(1);
- sc.init();
- sc.writeUint32(ftable.size());
- for (String key : ftable.keySet())
- {
- Object obj = ftable.get(key);
- short innerType = Util.qmfType(obj);
- sc.writeStr8(key);
- sc.writeUint8(innerType);
- this.encodeValue(sc, innerType, obj);
- }
- byte[] bytes = sc.segment().array();
- enc.writeVbin32(bytes);
+ enc.writeMap((HashMap) val);
break;
case 16: // int8
enc.writeInt8((Byte) val);
@@ -1005,4 +977,4 @@ public class Session broker.waitForStable();
}
}
-}
\ No newline at end of file +}
diff --git a/qpid/python/qmf/console.py b/qpid/python/qmf/console.py index 859ed94229..5348904097 100644 --- a/qpid/python/qmf/console.py +++ b/qpid/python/qmf/console.py @@ -958,17 +958,7 @@ class Session: elif typecode == 17: data = codec.read_int16() # S16 elif typecode == 18: data = codec.read_int32() # S32 elif typecode == 19: data = codec.read_int64() # S63 - elif typecode == 15: # FTABLE - data = {} - sc = Codec(codec.read_vbin32()) - if sc.encoded: - count = sc.read_uint32() - while count > 0: - k = sc.read_str8() - code = sc.read_uint8() - v = self._decodeValue(sc, code, broker) - data[k] = v - count -= 1 + elif typecode == 15: data = codec.read_map() # FTABLE elif typecode == 20: # OBJECT # Peek at the type, and if it is still 20 pull it decode. If # Not, call back into self. @@ -1031,18 +1021,7 @@ class Session: elif typecode == 18: codec.write_int32 (int(value)) # S32 elif typecode == 19: codec.write_int64 (int(value)) # S64 elif typecode == 20: value._encodeUnmanaged(codec) # OBJECT - elif typecode == 15: # FTABLE - sc = Codec() - if value is not None: - sc.write_uint32(len(value)) - for k, v in value.items(): - mtype = self.encoding(v) - sc.write_str8(k) - sc.write_uint8(mtype) - self._encodeValue(sc, v, mtype) - else: - sc.write_uint32(0) - codec.write_vbin32(sc.encoded) + elif typecode == 15: codec.write_map (value) # FTABLE elif typecode == 21: # List sc = Codec() self._encodeValue(sc, len(value), 3) @@ -1254,7 +1233,7 @@ class SchemaClass: self.arguments = [] self.session = session - hasSupertype = codec.read_uint8() + hasSupertype = 0 #codec.read_uint8() if self.kind == self.CLASS_KIND_TABLE: propCount = codec.read_uint16() statCount = codec.read_uint16() @@ -1729,7 +1708,7 @@ class Broker: """ Compose the header of a management message. """ codec.write_uint8(ord('A')) codec.write_uint8(ord('M')) - codec.write_uint8(ord('3')) + codec.write_uint8(ord('2')) codec.write_uint8(ord(opcode)) codec.write_uint32(seq) @@ -1743,7 +1722,7 @@ class Broker: if octet != 'M': return None, None octet = chr(codec.read_uint8()) - if octet != '3': + if octet != '2': return None, None opcode = chr(codec.read_uint8()) seq = codec.read_uint32() diff --git a/qpid/python/qpid/management.py b/qpid/python/qpid/management.py index 65807548e6..325ab4903d 100644 --- a/qpid/python/qpid/management.py +++ b/qpid/python/qpid/management.py @@ -400,7 +400,7 @@ class managementClient: """ Compose the header of a management message. """ codec.write_uint8 (ord ('A')) codec.write_uint8 (ord ('M')) - codec.write_uint8 (ord ('3')) + codec.write_uint8 (ord ('2')) codec.write_uint8 (opcode) codec.write_uint32 (seq) @@ -414,7 +414,7 @@ class managementClient: if octet != 'M': return None octet = chr (codec.read_uint8 ()) - if octet != '3': + if octet != '2': return None opcode = chr (codec.read_uint8 ()) seq = codec.read_uint32 () @@ -496,16 +496,7 @@ class managementClient: elif typecode == 14: # UUID data = codec.read_uuid () elif typecode == 15: # FTABLE - data = {} - sc = Codec(codec.read_vbin32()) - if sc.encoded: - count = sc.read_uint32() - while count > 0: - k = sc.read_str8() - code = sc.read_uint8() - v = self.decodeValue(sc, code) - data[k] = v - count -= 1 + data = codec.read_map () elif typecode == 16: data = codec.read_int8 () elif typecode == 17: @@ -680,7 +671,7 @@ class managementClient: packageName = codec.read_str8 () className = codec.read_str8 () hash = codec.read_bin128 () - hasSupertype = codec.read_uint8() + hasSupertype = 0 #codec.read_uint8() configCount = codec.read_uint16 () instCount = codec.read_uint16 () methodCount = codec.read_uint16 () diff --git a/qpid/ruby/lib/qpid/qmf.rb b/qpid/ruby/lib/qpid/qmf.rb index 1107f4384e..4711d355cd 100644 --- a/qpid/ruby/lib/qpid/qmf.rb +++ b/qpid/ruby/lib/qpid/qmf.rb @@ -640,25 +640,12 @@ module Qpid::Qmf when 12: data = codec.read_float # FLOAT when 13: data = codec.read_double # DOUBLE when 14: data = codec.read_uuid # UUID - #when 15: data = codec.read_map # FTABLE + when 15: data = codec.read_map # FTABLE when 16: data = codec.read_int8 # S8 when 17: data = codec.read_int16 # S16 when 18: data = codec.read_int32 # S32 when 19: data = codec.read_int64 # S64 - when 15: # Ftable - data = {} - rec_codec = Qpid::StringCodec.new(codec.spec, codec.read_vbin32()) - if rec_codec.encoded: - count = rec_codec.read_uint32() - while count > 0 do - k = rec_codec.read_str8() - code = rec_codec.read_uint8() - v = decode_value(rec_codec, code) - data[k] = v - count -= 1 - end - end - when 20: # Object + when 20: # Object inner_type_code = codec.read_uint8() if (inner_type_code == 20) classKey = ClassKey.new(codec) @@ -731,26 +718,12 @@ module Qpid::Qmf when 12: codec.write_float(value) # FLOAT when 13: codec.write_double(value) # DOUBLE when 14: codec.write_uuid(value) # UUID - #when 15: codec.write_map(value) # FTABLE + when 15: codec.write_map(value) # FTABLE when 16: codec.write_int8(value) # S8 when 17: codec.write_int16(value) # S16 when 18: codec.write_int32(value) # S32 when 19: codec.write_int64(value) # S64 when 20: value.encode(codec) - when 15: # FTABLE - send_codec = Qpid::StringCodec.new(codec.spec) - if !value.nil? - send_codec.write_uint32(value.size()) - value.each do |k,v| - mtype = encoding(v) - send_codec.write_str8(k.to_s) - send_codec.write_uint8(mtype) - encode_value(send_codec, v, mtype) - end - else - send_codec.write_uint32(0) - codec.write_vbin32(send_codec.encoded) - end when 21: # List send_codec = Qpid::StringCodec.new(codec.spec) encode_value(send_codec, value.size, 3) @@ -896,7 +869,7 @@ module Qpid::Qmf @methods = [] @arguments = [] - has_supertype = codec.read_uint8 + has_supertype = 0 #codec.read_uint8 if @kind == CLASS_KIND_TABLE prop_count = codec.read_uint16 stat_count = codec.read_uint16 @@ -1542,7 +1515,7 @@ module Qpid::Qmf def set_header(codec, opcode, seq=0) codec.write_uint8(?A) codec.write_uint8(?M) - codec.write_uint8(?3) + codec.write_uint8(?2) codec.write_uint8(opcode) codec.write_uint32(seq) end @@ -1707,7 +1680,7 @@ module Qpid::Qmf begin return [nil, nil] unless codec.read_uint8 == ?A return [nil, nil] unless codec.read_uint8 == ?M - return [nil, nil] unless codec.read_uint8 == ?3 + return [nil, nil] unless codec.read_uint8 == ?2 opcode = codec.read_uint8 seq = codec.read_uint32 return [opcode, seq] |