Support #1333
Find a correct way to parse XML method requests from VOCLient in VOHUB (branch 1229-GVOHub)
Status: | Closed | Start date: | 10/13/2014 | |
---|---|---|---|---|
Priority: | Normal | Due date: | ||
Assigned To: | Louge Thierry | % Done: | 100% | |
Category: | - | |||
Target version: | - | |||
Duration: |
Description
GVOHub is available for clients to register, but still not fully functionnal as the parsing of method calls from clients still is under progress.
Testing:
import gammalib as gam
hub = gam.GVOHub()
hub.start()
import gammalib as gam
client = gam.GVOClient()
client.connect()
Recurrence
No recurrence.
History
#1 Updated by Knödlseder Jürgen over 9 years ago
- Tracker changed from Bug to Support
Can you post a code fragment to illustrate what you want to do? I can then make a proposal ...
#2 Updated by Louge Thierry over 9 years ago
The content, received by the Hub from the client is:
<param><value><struct>
<member>
<name>samp.name</name>
<value><string>GammaLib</string></value>
</member>
<member>
<name>samp.description.text</name>
<value><string>GammaLib client</string></value>
</member>
<member>
<name>samp.icon.url</name>
<value><string>http://a.fsdn.com/allura/p/gammalib/icon</string></value>
</member>
<member>
<name>author.affiliation</name>
<value><string>IRAP, Toulouse, France</string></value>
</member>
<member>
<name>author.email</name>
<value><string>jurgen.knodlseder@irap.omp.eu</string></value>
</member>
<member>
<name>author.name</name>
<value><string>Juergen Knoedlseder</string></value>
</member>
</struct></value></param>
</params>
</methodCall>
The error raised while parsing the document is:
terminate called after throwing an instance of 'GException::xml_name_not_found’
what(): ** ERROR in GXmlNode GXmlNode::element(std::string&, int&): XML element name “name” not found.
While the code used to parse the message is the following:
const GXmlNode* node = xml.element(“methodCall”, 0);
if (node != NULL) {
node = node→element(“params”, 0);
if (node != NULL) {
node = node→element(“param”, 1);
if (node != NULL) {
node = node→element(“value”, 0);
if (node != NULL) {
node = node→element(“struct”, 0);
if (node != NULL) {
int num = node→elements(“member”);
for (int i = 0; i < num; ++i) {
const GXmlNode* member = node→element(“member”, i);
const GXmlNode* member_name = member→element(“name”, 0);
std::string one_name;
std::string one_value;
get_name_value_pair(member_name, one_name, one_value);
if (one_name == name) {
value = one_value;
break;
}
}
}
}
}
}
}
#3 Updated by Knödlseder Jürgen over 9 years ago
- Status changed from New to In Progress
I think this action can be closed as we identified a bug in the code, right?
#4 Updated by Knödlseder Jürgen over 9 years ago
- Status changed from In Progress to Closed
- % Done changed from 0 to 100