X-Git-Url: https://git.teslayout.com/public/public/public/?a=blobdiff_plain;f=source%2Fdiameter.comm%2FMessage.cpp;h=43c4301dbca2cb78a82e7f94d4e7b9bf6e96e983;hb=5a6cba5fde2b2f538a7515f8293cc0a8d9589dfa;hp=3280aa50ef317a7fccb3bfd9f08aca5a86ae150e;hpb=4e12ac57e93c052f716a6305ad8fc099c45899d1;p=anna.git diff --git a/source/diameter.comm/Message.cpp b/source/diameter.comm/Message.cpp index 3280aa5..43c4301 100644 --- a/source/diameter.comm/Message.cpp +++ b/source/diameter.comm/Message.cpp @@ -1,37 +1,9 @@ -// ANNA - Anna is Not 'N' Anymore -// -// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo -// -// https://bitbucket.org/testillano/anna -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// * Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// * Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following disclaimer -// in the documentation and/or other materials provided with the -// distribution. -// * Neither the name of Google Inc. nor the names of its -// contributors may be used to endorse or promote products derived from -// this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -// -// Authors: eduardo.ramos.testillano@gmail.com -// cisco.tierra@gmail.com +// ANNA - Anna is Not Nothingness Anymore // +// // +// (c) Copyright 2005-2015 Eduardo Ramos Testillano & Francisco Ruiz Rayo // +// // +// See project site at http://redmine.teslayout.com/projects/anna-suite // +// See accompanying file LICENSE or copy at http://www.teslayout.com/projects/public/anna.LICENSE // // Local @@ -54,13 +26,13 @@ using namespace anna::diameter::comm; const char* Message::asText(const OnExpiry::_v rc) -throw() { - static const char* text [] = { "Abandon", "Ignore" }; +{ + static const char* text [] = { "Abandon", "Ignore", "Retransmit" }; return text [rc]; } string Message::asString() const -throw() { +{ string result("diameter::comm::Message { "); result += "ClassCode: "; result += ClassCode::asText(a_classCode); @@ -72,7 +44,7 @@ throw() { } anna::xml::Node* Message::asXML(anna::xml::Node* parent) const -throw() { +{ anna::xml::Node* result = parent->createChild("diameter.comm.Message"); result->createAttribute("ClassCode", ClassCode::asText(a_classCode)); result->createAttribute("OnExpiry", asText(a_onExpiry)); @@ -82,14 +54,15 @@ throw() { } //void Message::clear () -// throw () +// //{ // ::clear(); //// a_classCode = ClassCode::Undefined; //// a_onExpiry = OnExpiry::Ignore; //} -bool Message::fixRequestSequence(HopByHop hbh, EndToEnd ete, bool freezeEndToEnd) throw() { + +bool Message::fixRequestSequence(HopByHop hbh, EndToEnd ete) { setRequestHopByHop(getHopByHop()); // original request hop-by-hop (backup) setRequestEndToEnd(getEndToEnd()); // original request end-to-end (backup) bool result = false; @@ -99,7 +72,7 @@ bool Message::fixRequestSequence(HopByHop hbh, EndToEnd ete, bool freezeEndToEnd result = true; } - if(!freezeEndToEnd) { + if(a_endToEndSequenced) { if(ete != getRequestEndToEnd()) { codec::functions::setEndToEnd((anna::DataBlock&)getBody(), ete); result = true; @@ -113,7 +86,7 @@ bool Message::fixRequestSequence(HopByHop hbh, EndToEnd ete, bool freezeEndToEnd msg += " (original) -> "; msg += anna::functions::asString(hbh); msg += " (session)"; - msg += freezeEndToEnd ? " | End to end [freezed]: " : " | End to end: "; + msg += a_endToEndSequenced ? " | End to end: " : " | End to end [end-to-end unchanged]: "; msg += anna::functions::asString(getRequestEndToEnd()); msg += " (original) -> "; msg += anna::functions::asString(ete); @@ -125,7 +98,7 @@ bool Message::fixRequestSequence(HopByHop hbh, EndToEnd ete, bool freezeEndToEnd -void Message::restoreSequencesAfterFix() throw() { +void Message::restoreSequencesAfterFix() { LOGDEBUG( string msg("diameter::comm::restoreSequencesAfterFix { "); msg += "Hop by hop: "; @@ -146,7 +119,7 @@ void Message::restoreSequencesAfterFix() throw() { void Message::send(ClientSession& clientSession) const -throw(anna::RuntimeException) { +noexcept(false) { try { clientSession.getServer()->send((Message *)this); } catch(anna::RuntimeException&) { @@ -155,7 +128,7 @@ throw(anna::RuntimeException) { } void Message::send(ServerSession& serverSession) const -throw(anna::RuntimeException) { +noexcept(false) { try { serverSession.getClientSocket()->send((Message *)this); } catch(anna::RuntimeException&) { @@ -165,16 +138,21 @@ throw(anna::RuntimeException) { -anna::diameter::CommandId Message::getCommandId(bool &isRequest) const throw() { +anna::diameter::CommandId Message::getCommandId(bool &isRequest) const { diameter::CommandId result = diameter::codec::functions::getCommandId(getBody()); isRequest = result.second; // diameter::codec::functions::isRequest(result); return result; } -HopByHop Message::getHopByHop() const throw() { +anna::diameter::ApplicationId Message::getApplicationId() const { + diameter::ApplicationId result = diameter::codec::functions::getApplicationId(getBody()); + return result; +} + +HopByHop Message::getHopByHop() const { return (diameter::codec::functions::getHopByHop(getBody())); } -EndToEnd Message::getEndToEnd() const throw() { +EndToEnd Message::getEndToEnd() const { return (diameter::codec::functions::getEndToEnd(getBody())); }