2 #include <base/Time.hpp> 10 if(aidElem->ValueStr() !=
"agent-identifier")
12 throw std::runtime_error(
"Parsing error: node not named 'agent-identifier' but " + aidElem->ValueStr());
17 const TiXmlElement * pChild = aidElem->FirstChildElement();
21 for ( pChild = pChild->NextSiblingElement(); pChild != 0; pChild = pChild->NextSiblingElement())
24 const std::string& text = pChild->ValueStr();
25 if(text ==
"addresses")
28 const TiXmlElement * pInnerChild;
29 for ( pInnerChild = pChild->FirstChildElement(); pInnerChild != 0; pInnerChild = pInnerChild->NextSiblingElement())
31 aid.addAddress(
parseURL(pInnerChild));
34 else if(text ==
"resolvers")
39 else if(text.substr(0, 2) ==
"X-")
51 const TiXmlElement * pChild;
52 for ( pChild = aidlElem->FirstChildElement(); pChild != 0; pChild = pChild->NextSiblingElement())
61 const char* date = dateElem->GetText();
64 throw std::runtime_error(
"ill-formed date element");
71 if(nameElem->ValueStr() !=
"name")
73 throw std::runtime_error(
"Parsing error: node not named 'name' but " + nameElem->ValueStr());
77 const char* p = nameElem->GetText();
80 return std::string(p);
82 p = nameElem->Attribute(
"id");
85 return std::string(p);
87 p = nameElem->Attribute(
"refid");
90 return std::string(p);
92 throw std::runtime_error(
"ill-formed name element");
102 const TiXmlElement * pChild = receivedObjectElem->FirstChildElement();
104 const std::string* byValue = pChild->Attribute(std::string(
"value"));
112 const std::string byUrl =
parseURL(pChild->FirstChildElement());
116 for ( pChild = pChild->NextSiblingElement(); pChild != 0; pChild = pChild->NextSiblingElement())
119 const std::string& text = pChild->ValueStr();
120 if(text ==
"received-from")
122 const std::string* fromValue = pChild->Attribute(std::string(
"value"));
123 if(fromValue != NULL)
130 const std::string fromUrl =
parseURL(pChild->FirstChildElement());
134 else if(text ==
"received-date")
136 const std::string* date = pChild->Attribute(std::string(
"value"));
139 throw std::runtime_error(
"ill-formed received-date element");
143 else if(text ==
"received-id")
145 const std::string*
id = pChild->Attribute(std::string(
"value"));
148 throw std::runtime_error(
"ill-formed received-id element");
152 else if(text ==
"received-via")
154 const std::string* via = pChild->Attribute(std::string(
"value"));
157 throw std::runtime_error(
"ill-formed received-via element");
161 else if(text ==
"user-defined")
174 if(urlElem->ValueStr() !=
"url")
176 throw std::runtime_error(
"Parsing error: node not named 'url' but " + urlElem->ValueStr());
183 throw std::runtime_error(
"ill-formed URL element");
185 return std::string(url);
190 const char* href = paramElem->Attribute(
"href");
191 const char* value = paramElem->GetText();
193 if(href == NULL || value == NULL)
195 throw std::runtime_error(
"ill-formed user defined parameter");
198 return UserdefParam(std::string(href).substr(2), std::string(value));
207 const std::string modDateStr = dateStr.substr(0, 15) +
":" + dateStr.substr(15);
210 return base::Time::fromString(modDateStr, base::Time::Milliseconds,
"%Y%m%dT%H%M%S");
212 catch(std::exception& e)
215 return base::Time::fromString(modDateStr, base::Time::Milliseconds,
"%Y%m%dZ%H%M%S");
221 const char* text = elem->GetText();
226 return elem->Attribute(identifier);
void setUserdefinedParameters(const UserdefinedParameterList ¶mList)
static const ReceivedObject parseReceivedObject(const TiXmlElement *receivedObjectElem)
void setName(const std::string &name)
the method checks whether the passed name string is a word or not(according to the fipa spec) ...
static const std::string parseURL(const TiXmlElement *urlElem)
std::vector< UserdefParam > UserdefinedParameterList
std::vector< AgentID > AgentIDList
static const AgentIDList parseAgentIDSequence(const TiXmlElement *aidlElem)
static const base::Time strToDate(const std::string &dateStr)
static const UserdefParam parseUserdefinedParameter(const TiXmlElement *paramElem)
static const AgentID parseAgentID(const TiXmlElement *aidElem)
void setFrom(const URL &from)
static const char * extractContentOrAttribute(const TiXmlElement *elem, const char *identifier="href")
static const std::string parseName(const TiXmlElement *nameElem)
overloaded equality operator for UserdefParam class objects
static const base::Time parseDate(const TiXmlElement *dateElem)
void setBy(const URL &by)
Implements the general AgentID functionality, which is present throughout the fipa specifications(FIP...
Foundation of Physical Intelligent Agents.
void setDate(const base::Time &date)