Fix timeout order in procedure dynamic operation and program for ST
[anna.git] / dynamic / launcher / gx / 00001 / Procedure.cpp
index 63b4ef1..b74f362 100644 (file)
@@ -27,7 +27,7 @@ namespace {
    void usage (std::string &response) {
      response += "\n\nInvalid arguments. Provide these ones:";
      response += "\n";
-     response += "\n<test timeout ms (0: no timeout step)><initial sequence>|<final sequence>|<digits>|<CCR-I xml file>[|CCR-T xml file]";
+     response += "\n<initial sequence>|<final sequence>|<test timeout ms (0: no timeout step)>|<digits>|<CCR-I xml file>[|CCR-T xml file]";
      response += "\n";
      response += "\nSequences are parsed when needed, over AVPs or internal values:";
      response += "\n";
@@ -42,7 +42,7 @@ namespace {
      response += "\nThe same will be done in MSISDN and IMSI (Subscription-Data AVPs).";
      response += "\nFramed-IP-Address will be sequenced with a direct correspondence to hex value.";
      response += "\n";
-     response += "\nThen, you could provide these arguments: \"5000|2000000|9000000|7|CCR-I.xml|CCR-T.xml\"";
+     response += "\nThen, you could provide these arguments: \"2000000|9000000|5000|7|CCR-I.xml|CCR-T.xml\"";
      response += "\n";
    }
 }
@@ -94,56 +94,51 @@ void Procedure::execute(const std::string &args, std::string &response, anna::di
   anna::diameter::codec::Avp *ccri_sessionId, *ccrt_sessionId, *ccri_framedIPAddress, *ccrt_framedIPAddress, *ccri_msisdn, *ccri_imsi;
   anna::diameter::codec::Avp *si1, *si2, *sidata1, *sidata2, *sitype1, *sitype2;
 
-  try {
+  ///////// CCR-Initial:
+  ccri.loadXML(ccr_i);
 
-    ///////// CCR-Initial:
-    ccri.loadXML(ccr_i);
+  // Session-Id & Framed-Ip-Address AVPs
+  ccri_sessionId = ccri.getAvp("Session-Id");
+  ccri_framedIPAddress = ccri.getAvp("Framed-IP-Address");
 
-    // Session-Id & Framed-Ip-Address AVPs
-    ccri_sessionId = ccri.getAvp("Session-Id");
-    ccri_framedIPAddress = ccri.getAvp("Framed-IP-Address");
-
-    // Subscription-Id AVPs
-    if (ccri.countAvp("Subscription-Id") != 2) {
-      response += "Both Subscription-Id MSISDN & IMSI Avps must be present in the CCR-Initial provided !";
-      return;
-    }
+  // Subscription-Id AVPs
+  if (ccri.countAvp("Subscription-Id") != 2) {
+    response += "Both Subscription-Id MSISDN & IMSI Avps must be present in the CCR-Initial provided !";
+    return;
+  }
 
-    si1 = ccri.getAvp("Subscription-Id", 1, anna::Exception::Mode::Ignore);
-    si2 = ccri.getAvp("Subscription-Id", 2, anna::Exception::Mode::Ignore);
+  si1 = ccri.getAvp("Subscription-Id", 1, anna::Exception::Mode::Ignore);
+  si2 = ccri.getAvp("Subscription-Id", 2, anna::Exception::Mode::Ignore);
 
-    if (!si1 || !si2) {
-      response += "Cannot found Subscription-Id MSISDN & IMSI Avps !" ;
-      return;
-    }
+  if (!si1 || !si2) {
+    response += "Cannot found Subscription-Id MSISDN & IMSI Avps !" ;
+    return;
+  }
 
-    sidata1 = si1->getAvp("Subscription-Id-Data");
-    sidata2 = si2->getAvp("Subscription-Id-Data");
-    sitype1 = si1->getAvp("Subscription-Id-Type");
-    //sitype2 = si2->getAvp("Subscription-Id-Type");
+  sidata1 = si1->getAvp("Subscription-Id-Data");
+  sidata2 = si2->getAvp("Subscription-Id-Data");
+  sitype1 = si1->getAvp("Subscription-Id-Type");
+  //sitype2 = si2->getAvp("Subscription-Id-Type");
 
-    if (sitype1->getEnumerated()->getValue() == anna::diameter::helpers::dcca::AVPVALUES__Subscription_Id_Type::END_USER_E164) {
-      ccri_msisdn = sidata1;
-      ccri_imsi = sidata2;
-    }
-    else {
-      ccri_msisdn = sidata2;
-      ccri_imsi = sidata1;
-    }
+  if (sitype1->getEnumerated()->getValue() == anna::diameter::helpers::dcca::AVPVALUES__Subscription_Id_Type::END_USER_E164) {
+    ccri_msisdn = sidata1;
+    ccri_imsi = sidata2;
+  }
+  else {
+    ccri_msisdn = sidata2;
+    ccri_imsi = sidata1;
+  }
 
-    ///////// CCR-Termination:
-    if (haveTermination) {
-      ccrt.loadXML(ccr_t);
+  ///////// CCR-Termination:
+  if (haveTermination) {
+    ccrt.loadXML(ccr_t);
 
-      // Session-Id & Framed-Ip-Address AVPs
-      ccrt_sessionId = ccrt.getAvp("Session-Id");
-      ccrt_framedIPAddress = ccrt.getAvp("Framed-IP-Address");
-    }
-  }
-  catch(anna::RuntimeException &ex) {
-    ex.trace();
+    // Session-Id & Framed-Ip-Address AVPs
+    ccrt_sessionId = ccrt.getAvp("Session-Id");
+    ccrt_framedIPAddress = ccrt.getAvp("Framed-IP-Address");
   }
 
+
   // Prepare session-id string:
   std::string sessionId = ccri_sessionId->getUTF8String()->getValue();
   std::size_t last_semicolon = sessionId.rfind(";");