summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/qmf/SchemaMethod.cpp
diff options
context:
space:
mode:
authorTed Ross <tross@apache.org>2010-09-21 21:48:41 +0000
committerTed Ross <tross@apache.org>2010-09-21 21:48:41 +0000
commitd47927b3e150057f6d615a0d00c8eff6c83320ac (patch)
tree6cf1da8bd7a46fd3cef8251af94f88bbad0e627d /qpid/cpp/src/qmf/SchemaMethod.cpp
parent81414cc0fb52efbd77e3e3bc83ed0c5dcb7fe83a (diff)
downloadqpid-python-d47927b3e150057f6d615a0d00c8eff6c83320ac.tar.gz
QMFv2 Additions:
- QMFv2 schema encoding completed - Schema queries handled by the agent and initiated by the console by user request - Full query support with predicates evaluated on the agent (regex not yet implemented) - Agent filtering in the console - Agent aging in the console - Unit tests git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@999662 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qmf/SchemaMethod.cpp')
-rw-r--r--qpid/cpp/src/qmf/SchemaMethod.cpp40
1 files changed, 39 insertions, 1 deletions
diff --git a/qpid/cpp/src/qmf/SchemaMethod.cpp b/qpid/cpp/src/qmf/SchemaMethod.cpp
index 7ee6646ec4..e8dcfd2401 100644
--- a/qpid/cpp/src/qmf/SchemaMethod.cpp
+++ b/qpid/cpp/src/qmf/SchemaMethod.cpp
@@ -68,10 +68,48 @@ SchemaMethodImpl::SchemaMethodImpl(const string& n, const string& options) : nam
}
}
-SchemaMethodImpl::SchemaMethodImpl(const qpid::types::Variant::Map&)
+
+SchemaMethodImpl::SchemaMethodImpl(const qpid::types::Variant::Map& map)
+{
+ Variant::Map::const_iterator iter;
+ Variant::List::const_iterator lIter;
+
+ iter = map.find("_name");
+ if (iter == map.end())
+ throw QmfException("SchemaMethod without a _name element");
+ name = iter->second.asString();
+
+ iter = map.find("_desc");
+ if (iter != map.end())
+ desc = iter->second.asString();
+
+ iter = map.find("_arguments");
+ if (iter != map.end()) {
+ const Variant::List& argList(iter->second.asList());
+ for (lIter = argList.begin(); lIter != argList.end(); lIter++)
+ addArgument(SchemaProperty(new SchemaPropertyImpl(lIter->asMap())));
+ }
+}
+
+
+Variant::Map SchemaMethodImpl::asMap() const
{
+ Variant::Map map;
+ Variant::List argList;
+
+ map["_name"] = name;
+
+ if (!desc.empty())
+ map["_desc"] = desc;
+
+ for (list<SchemaProperty>::const_iterator iter = arguments.begin(); iter != arguments.end(); iter++)
+ argList.push_back(SchemaPropertyImplAccess::get(*iter).asMap());
+ map["_arguments"] = argList;
+
+ return map;
}
+
SchemaMethodImpl::SchemaMethodImpl(qpid::management::Buffer& buffer)
{
Variant::Map::const_iterator iter;