diff options
author | Kenneth Anthony Giusti <kgiusti@apache.org> | 2010-03-26 20:26:17 +0000 |
---|---|---|
committer | Kenneth Anthony Giusti <kgiusti@apache.org> | 2010-03-26 20:26:17 +0000 |
commit | b35a5177786f7a4bb9642f9bcff60f17f1065370 (patch) | |
tree | 2f9af62324f5c8fc34a798f058c83c49080f95c0 | |
parent | 669055df71300361d6235f1b03690899d12eeeca (diff) | |
download | qpid-python-b35a5177786f7a4bb9642f9bcff60f17f1065370.tar.gz |
fix v2 list code gen
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/qmf-devel0.7a@928043 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | qpid/cpp/managementgen/qmfgen/management-types.xml | 7 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/management/ManagementAgent.cpp | 52 | ||||
-rw-r--r-- | qpid/cpp/src/qpid/management/ManagementAgent.h | 4 |
3 files changed, 31 insertions, 32 deletions
diff --git a/qpid/cpp/managementgen/qmfgen/management-types.xml b/qpid/cpp/managementgen/qmfgen/management-types.xml index f00958c22d..865492c47c 100644 --- a/qpid/cpp/managementgen/qmfgen/management-types.xml +++ b/qpid/cpp/managementgen/qmfgen/management-types.xml @@ -51,9 +51,10 @@ stream="#.getV2Key()" size="16" accessor="direct" init="::qpid::management::Obje decode="{::qpid::framing::FieldTable _f; _f.decode(@); # = ManagementAgent::toMap(_f);}" size="::qpid::framing::FieldTable(ManagementAgent::fromMap(#)).encodedSize()" stream="#" accessor="direct" init="::qpid::messaging::VariantMap()" byRef="y" unmap="::qpid::messaging::VariantMap(); assert(false); /*TBD*/"/> -<!-- not supported in V1 -<type name="list" base="LIST" cpp="::qpid::messaging::Variant::List" encode="#.encode(@)" decode="#.decode(@)" stream="#" size="#.encodedSize()" accessor="direct" init="::qpid::messaging::Variant::List()" byRef="y" unmap="::qpid::messaging::Variant::List(); assert(false); /*TBD*/"/> ---> +<type name="list" base="LIST" cpp="::qpid::messaging::Variant::List" + encode="{::qpid::framing::List _l = ManagementAgent::fromList(#); _l.encode(@);}" + decode="{::qpid::framing::List _l; _l.decode(@); # = ManagementAgent::toList(_l);}" +stream="#" size="#.encodedSize()" accessor="direct" init="::qpid::messaging::Variant::List()" byRef="y" unmap="::qpid::messaging::Variant::List(); assert(false); /*TBD*/"/> <type name="hilo8" base="U8" cpp="uint8_t" encode="@.putOctet(#)" decode="# = @.getOctet()" style="wm" stream="#" size="1" accessor="counter" init="0"/> <type name="hilo16" base="U16" cpp="uint16_t" encode="@.putShort(#)" decode="# = @.getShort()" style="wm" stream="#" size="2" accessor="counter" init="0"/> diff --git a/qpid/cpp/src/qpid/management/ManagementAgent.cpp b/qpid/cpp/src/qpid/management/ManagementAgent.cpp index 127c43a701..10c16a39f0 100644 --- a/qpid/cpp/src/qpid/management/ManagementAgent.cpp +++ b/qpid/cpp/src/qpid/management/ManagementAgent.cpp @@ -34,6 +34,7 @@ #include "qpid/messaging/Message.h" #include "qpid/messaging/ListContent.h" #include "qpid/messaging/ListView.h" +#include "qpid/framing/List.h" #include <list> #include <iostream> #include <fstream> @@ -2220,18 +2221,18 @@ qpid::messaging::Variant::Map ManagementAgent::toMap(const FieldTable& from) return map; } -// qpid::messaging::Variant::List ManagementAgent::toList(const qpid::framing::Array& from) -// { -// qpid::messaging::Variant::List _list; +qpid::messaging::Variant::List ManagementAgent::toList(const List& from) +{ + qpid::messaging::Variant::List _list; -// for (qpid::framing::Array::const_iterator iter = from.begin(); iter != from.end(); iter++) { -// const qpid::framing::Array::ValuePtr& val(*iter); + for (List::const_iterator iter = from.begin(); iter != from.end(); iter++) { + const List::ValuePtr& val(*iter); -// _list.push_back(toVariant(val)); -// } + _list.push_back(toVariant(val)); + } -// return _list; -// } + return _list; +} qpid::framing::FieldTable ManagementAgent::fromMap(const qpid::messaging::Variant::Map& from) { @@ -2250,20 +2251,20 @@ qpid::framing::FieldTable ManagementAgent::fromMap(const qpid::messaging::Varian } -// qpid::framing::Array ManagementAgent::fromList(const qpid::messaging::Variant::List& from) -// { -// qpid::framing::Array fa; +List ManagementAgent::fromList(const qpid::messaging::Variant::List& from) +{ + List fa; -// for (qpid::messaging::Variant::List::const_iterator iter = from.begin(); -// iter != from.end(); -// iter++) { -// const qpid::messaging::Variant& val(*iter); + for (qpid::messaging::Variant::List::const_iterator iter = from.begin(); + iter != from.end(); + iter++) { + const qpid::messaging::Variant& val(*iter); -// fa.push_back(toFieldValue(val)); -// } + fa.push_back(toFieldValue(val)); + } -// return fa; -// } + return fa; +} boost::shared_ptr<FieldValue> ManagementAgent::toFieldValue(const Variant& in) @@ -2286,9 +2287,7 @@ boost::shared_ptr<FieldValue> ManagementAgent::toFieldValue(const Variant& in) case messaging::VAR_STRING: return boost::shared_ptr<FieldValue>(new Str16Value(in.asString())); case messaging::VAR_UUID: return boost::shared_ptr<FieldValue>(new UuidValue(in.asUuid().data())); case messaging::VAR_MAP: return boost::shared_ptr<FieldValue>(new FieldTableValue(ManagementAgent::fromMap(in.asMap()))); - default: - break; - //case messaging::VAR_LIST: return boost::shared_ptr<FieldValue>(new ArrayValue(ManagementAgent::fromList(in.asList()))); + case messaging::VAR_LIST: return boost::shared_ptr<FieldValue>(new ListValue(ManagementAgent::fromList(in.asList()))); } QPID_LOG(error, "Unknown Variant type - not converted: [" << in.getType() << "]"); @@ -2385,10 +2384,9 @@ qpid::messaging::Variant ManagementAgent::toVariant(const boost::shared_ptr<Fiel out = ManagementAgent::toMap(in->get<FieldTable>()); break; - //case 0xa9: // list of variant types - // out = Variant::List(); - // translate<List>(in, out.asList(), &toVariant); - // break; + case 0xa9: // list of variant types + out = ManagementAgent::toList(in->get<List>()); + break; //case 0xaa: //convert amqp0-10 array (uniform type) into variant list // out = Variant::List(); // translate<Array>(in, out.asList(), &toVariant); diff --git a/qpid/cpp/src/qpid/management/ManagementAgent.h b/qpid/cpp/src/qpid/management/ManagementAgent.h index 44d3961d52..73760940ab 100644 --- a/qpid/cpp/src/qpid/management/ManagementAgent.h +++ b/qpid/cpp/src/qpid/management/ManagementAgent.h @@ -136,8 +136,8 @@ public: // TODO: remove these when Variant API moved into common library. static messaging::Variant::Map toMap(const framing::FieldTable& from); static framing::FieldTable fromMap(const messaging::Variant::Map& from); - //static messaging::Variant::List toList(const framing::Array& from); - //static framing::Array fromList(const messaging::Variant::List& from); + static messaging::Variant::List toList(const framing::List& from); + static framing::List fromList(const messaging::Variant::List& from); static boost::shared_ptr<framing::FieldValue> toFieldValue(const messaging::Variant& in); static messaging::Variant toVariant(const boost::shared_ptr<framing::FieldValue>& val); |