Fixed Failed-AVP bug (feature). Now wrong avps inside grouped are correctly tracked
[anna.git] / source / diameter / codec / functions.cpp
index 88749a0..7c5516c 100644 (file)
 using namespace anna::diameter::codec;
 
 
+
+
+// Parent struct helper /////////////////////////////////////////////////////////////////////////////
+void parent::setMessage(const anna::diameter::CommandId & mid, const char *mname) throw() {
+  MessageId = mid;
+  if (mname) {
+    MessageName = mname;
+  }
+  else {
+       MessageName = "Message";
+    MessageName += anna::diameter::functions::commandIdAsPairString(mid);
+  }
+}
+
+void parent::addAvp(const anna::diameter::AvpId & aid, const char *aname) throw() {
+  AvpsId.push_back(aid);
+  std::string name;
+  if (aname) {
+       name = aname;
+  }
+  else {
+    name = "Avp";
+       name += anna::diameter::functions::avpIdAsPairString(aid);
+  }
+  AvpsName.push_back(name);
+}
+
+std::string parent::asString() const throw() { // "<command><avp 1>-><avp 2>->...-><avp N>"
+  std::string result = MessageName;
+  for (std::vector<std::string>::const_iterator it = AvpsName.begin(); it != AvpsName.end(); it++) {
+       result += "->";
+       result += (*it);
+  }
+
+  return result;
+}
+/////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
+
 // getters
 anna::diameter::CommandId functions::getCommandId(const anna::DataBlock & db) throw(anna::RuntimeException) {
   if(db.getSize() < Message::HeaderLength)