X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=dynamic%2Flauncher%2Fgx%2F00001%2FProcedure.cpp;h=99a87fe10fe0b8b4b3a630a48298995e635ae8c0;hb=2e2f6d4e2ffe1c8b86c812807f0e501ab78f56f9;hp=086a0741ee176333f4a3a51be1cce3069fcf3d2f;hpb=7ee10b64f4c116460ffef5784eb9ef87d3f2339c;p=anna.git diff --git a/dynamic/launcher/gx/00001/Procedure.cpp b/dynamic/launcher/gx/00001/Procedure.cpp index 086a074..99a87fe 100644 --- a/dynamic/launcher/gx/00001/Procedure.cpp +++ b/dynamic/launcher/gx/00001/Procedure.cpp @@ -18,6 +18,7 @@ #include #include #include +#include // Local #include "Procedure.hpp" @@ -47,7 +48,7 @@ namespace { } } -void Procedure::execute(const std::string &args, std::string &response, anna::diameter::comm::OriginHost *originHost) throw(anna::RuntimeException) { +void Procedure::execute(const std::string &args, std::string &response) throw(anna::RuntimeException) { response = "Dynamic procedure failed to process '"; response += args; response += "': "; @@ -93,6 +94,7 @@ void Procedure::execute(const std::string &args, std::string &response, anna::di anna::diameter::codec::Message ccri, ccrt; 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; + anna::diameter::codec::Avp *ccri_originHost; ///////// CCR-Initial: ccri.loadXML(ccr_i); @@ -100,6 +102,7 @@ void Procedure::execute(const std::string &args, std::string &response, anna::di // Session-Id & Framed-Ip-Address AVPs ccri_sessionId = ccri.getAvp("Session-Id"); ccri_framedIPAddress = ccri.getAvp("Framed-IP-Address"); + ccri_originHost = ccri.getAvp("Origin-Host"); // Subscription-Id AVPs if (ccri.countAvp("Subscription-Id") != 2) { @@ -206,6 +209,12 @@ void Procedure::execute(const std::string &args, std::string &response, anna::di char cad_framed[16]; anna::testing::TestCase *tc; + // Origin host manager: + anna::diameter::comm::OriginHostManager &ohm = anna::diameter::comm::OriginHostManager::instantiate(); + // Assume the oh name from CCR-I (same as CCR-T): + std::string originHostName = ccri_originHost->getDiameterIdentity()->getValue(); + anna::diameter::comm::OriginHost *originHost = ohm.getOriginHost(originHostName); + for (ll_index = 0; ll_index < ll_seq_size; ll_index++) { // Calculate next values //////////////////////////////////////////////////////////// @@ -253,19 +262,19 @@ void Procedure::execute(const std::string &args, std::string &response, anna::di } // Step 2: sendxml2e: CCR-Initial - tc->addSendxml2e(ccri.code(), originHost, -1 /* 'wait for request' step number for answers */); + tc->addSendDiameterXml2e(ccri.code(), originHost, -1 /* 'wait for request' step number for answers */); // Step 3: waitfe: CCA with same session id // PARAM: 1 2 3 4 5 6 7 8 9 10 11 // wait|[code]|[bitR]|[hopByHop]|[applicationId]|[sessionId]|[resultCode]|[msisdn]|[imsi]|[serviceContextId] - tc->addWait(true /* from entity */, "272", "0", "", "", sessionId, "2001", "", "", ""); + tc->addWaitDiameter(true /* from entity */, "272", "0", "", "", sessionId, "2001", "", "", ""); if (haveTermination) { // Step 4: sendxml2e: CCR-Termination - tc->addSendxml2e(ccrt.code(), originHost, -1 /* 'wait for request' step number for answers */); + tc->addSendDiameterXml2e(ccrt.code(), originHost, -1 /* 'wait for request' step number for answers */); // Step 5: waitfe: CCA with same session id - tc->addWait(true /* from entity */, "272", "0", "", "", sessionId, "2001", "", "", ""); + tc->addWaitDiameter(true /* from entity */, "272", "0", "", "", sessionId, "2001", "", "", ""); } } // loop