-// ANNA - Anna is Not Nothingness Anymore
-//
-// (c) Copyright 2005-2014 Eduardo Ramos Testillano & Francisco Ruiz Rayo
-//
-// http://redmine.teslayout.com/projects/anna-suite
-//
-// 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 the copyright holder 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
#include <anna/diameter/codec/tme/Avp.hpp>
-#include <anna/diameter/codec/tme/Engine.hpp>
+//#include <anna/diameter/codec/tme/Engine.hpp>
#include <anna/diameter/helpers/defines.hpp>
#include <anna/diameter/stack/Format.hpp>
using namespace anna::diameter::codec::tme;
-
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------- Avp::Avp()
-//------------------------------------------------------------------------------
-Avp::Avp() {
- initialize();
-}
-
-
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------- Avp::Avp()
-//------------------------------------------------------------------------------
-Avp::Avp(AvpId id) {
- initialize();
- setId(id);
-}
-
-
//------------------------------------------------------------------------------
//------------------------------------------------------------------ Avp::~Avp()
//------------------------------------------------------------------------------
}
-//------------------------------------------------------------------------------
-//------------------------------------------------------------- Avp::getEngine()
-//------------------------------------------------------------------------------
-anna::diameter::codec::Engine * Avp::getEngine() const throw(anna::RuntimeException) {
- return a_engine ? a_engine : (a_engine = (anna::diameter::codec::Engine *)anna::functions::component <Engine> (ANNA_FILE_LOCATION));
-}
+////------------------------------------------------------------------------------
+////------------------------------------------------------------- Avp::getEngine()
+////------------------------------------------------------------------------------
+//anna::diameter::codec::Engine * Avp::getEngine() const noexcept(false) {
+// if(!a_engine)
+// throw anna::RuntimeException("Invalid codec engine reference (NULL)", ANNA_FILE_LOCATION);
+//
+// return a_engine;
+//}
//------------------------------------------------------------------------------
//---------------------------------------------------- Avp::initializeByFormat()
//------------------------------------------------------------------------------
-void Avp::initializeByFormat() throw() {
+void Avp::initializeByFormat() {
a_ISDNNumber = NULL;
a_ISDNAddress = NULL;
a_Unsigned16 = NULL;
//------------------------------------------------------------------------------
//--------------------------------------------------------- Avp::clearByFormat()
//------------------------------------------------------------------------------
-void Avp::clearByFormat() throw() {
+void Avp::clearByFormat() {
delete a_ISDNNumber;
delete a_ISDNAddress;
delete a_Unsigned16;
//------------------------------------------------------------------------------
//---------------------------------------------------- Avp::allocationByFormat()
//------------------------------------------------------------------------------
-void Avp::allocationByFormat(const stack::Format *stackFormat) throw() {
+void Avp::allocationByFormat(const stack::Format *stackFormat) {
if(stackFormat->getName() == "ISDNNumber") a_ISDNNumber = new ISDNNumber();
else if(stackFormat->getName() == "ISDNAddress") a_ISDNAddress = new ISDNAddress();
else if(stackFormat->getName() == "Unsigned16") a_Unsigned16 = new Unsigned16();
//------------------------------------------------------------------------------
//----------------------------------------------------- Avp::getLengthByFormat()
//------------------------------------------------------------------------------
-U24 Avp::getLengthByFormat(const stack::Format *stackFormat) const throw() {
+U24 Avp::getLengthByFormat(const stack::Format *stackFormat) const {
U24 result = 0;
if(stackFormat->getName() == "ISDNNumber") result += a_ISDNNumber->getSize();
//------------------------------------------------------------------------------
//------------------------------------------------ Avp::decodeDataPartByFormat()
//------------------------------------------------------------------------------
-void Avp::decodeDataPartByFormat(const char * buffer, int size, const stack::Format *stackFormat) throw(anna::RuntimeException) {
+void Avp::decodeDataPartByFormat(const char * buffer, int size, const stack::Format *stackFormat) noexcept(false) {
if(stackFormat->getName() == "ISDNNumber") a_ISDNNumber->decode(buffer, size);
else if(stackFormat->getName() == "ISDNAddress") a_ISDNAddress->decode(buffer, size);
else if(stackFormat->getName() == "Unsigned16") a_Unsigned16->decode(buffer, size);
//------------------------------------------------------------------------------
//---------------------------------------------------------- Avp::codeByFormat()
//------------------------------------------------------------------------------
-void Avp::codeByFormat(char* dataPart, const stack::Format *stackFormat) const throw(anna::RuntimeException) {
+void Avp::codeByFormat(char* dataPart, const stack::Format *stackFormat) const noexcept(false) {
int dataBytes;
if(stackFormat->getName() == "ISDNNumber") a_ISDNNumber->code(dataPart, dataBytes);
//------------------------------------------------------------------------------
//---------------------------------------------------- Avp::getXMLdataByFormat()
//------------------------------------------------------------------------------
-std::string Avp::getXMLdataByFormat(bool & isHex, const stack::Format *stackFormat) const throw() {
+std::string Avp::getXMLdataByFormat(bool & isHex, const stack::Format *stackFormat) const {
std::string result;
if(stackFormat->getName() == "ISDNNumber") {
//------------------------------------------------------------------------------
//------------------------------------------------------- Avp::fromXMLByFormat()
//------------------------------------------------------------------------------
-void Avp::fromXMLByFormat(const anna::xml::Attribute* data, const anna::xml::Attribute* hexData, const stack::Format *stackFormat) throw(anna::RuntimeException) {
+void Avp::fromXMLByFormat(const anna::xml::Attribute* data, const anna::xml::Attribute* hexData, const stack::Format *stackFormat) noexcept(false) {
if(stackFormat->getName() == "ISDNNumber") {
if(data) a_ISDNNumber->fromPrintableString(data->getValue().c_str());
else if(hexData) a_ISDNNumber->fromHexString(hexData->getValue());