summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKenneth Anthony Giusti <kgiusti@apache.org>2010-03-26 20:26:17 +0000
committerKenneth Anthony Giusti <kgiusti@apache.org>2010-03-26 20:26:17 +0000
commitb35a5177786f7a4bb9642f9bcff60f17f1065370 (patch)
tree2f9af62324f5c8fc34a798f058c83c49080f95c0
parent669055df71300361d6235f1b03690899d12eeeca (diff)
downloadqpid-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.xml7
-rw-r--r--qpid/cpp/src/qpid/management/ManagementAgent.cpp52
-rw-r--r--qpid/cpp/src/qpid/management/ManagementAgent.h4
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);