Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

pana_provider_info.cxx

00001 /* BEGIN_COPYRIGHT                                                        */
00002 /*                                                                        */
00003 /* Open Diameter: Open-source software for the Diameter and               */
00004 /*                Diameter related protocols                              */
00005 /*                                                                        */
00006 /* Copyright (C) 2002-2004 Open Diameter Project                          */
00007 /*                                                                        */
00008 /* This library is free software; you can redistribute it and/or modify   */
00009 /* it under the terms of the GNU Lesser General Public License as         */
00010 /* published by the Free Software Foundation; either version 2.1 of the   */
00011 /* License, or (at your option) any later version.                        */
00012 /*                                                                        */
00013 /* This library is distributed in the hope that it will be useful,        */
00014 /* but WITHOUT ANY WARRANTY; without even the implied warranty of         */
00015 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU      */
00016 /* Lesser General Public License for more details.                        */
00017 /*                                                                        */
00018 /* You should have received a copy of the GNU Lesser General Public       */
00019 /* License along with this library; if not, write to the Free Software    */
00020 /* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307    */
00021 /* USA.                                                                   */
00022 /*                                                                        */
00023 /* In addition, when you copy and redistribute some or the entire part of */
00024 /* the source code of this software with or without modification, you     */
00025 /* MUST include this copyright notice in each copy.                       */
00026 /*                                                                        */
00027 /* If you make any changes that are appeared to be useful, please send    */
00028 /* sources that include the changed part to                               */
00029 /* diameter-developers@lists.sourceforge.net so that we can reflect your  */
00030 /* changes to one unified version of this software.                       */
00031 /*                                                                        */
00032 /* END_COPYRIGHT                                                          */
00033 
00034 #include "pana_provider_info.h"
00035 
00036 void PANA_ProviderInfoTool::Add(diameter_grouped_t &grp, PANA_CfgProviderInfo &pInfo)
00037 {
00038    AAAAvpContainerManager cm;
00039    AAAAvpContainerEntryManager em;
00040    AAAAvpContainerEntry *e;
00041 
00042    // Add the Provider Id to group
00043    if (pInfo.id_ > 0) {
00044       AAAAvpContainer *c_id = cm.acquire("Provider-Identifier");
00045       e = em.acquire(AAA_AVP_UINTEGER32_TYPE);
00046       diameter_unsigned32_t &pid = e->dataRef(Type2Type<diameter_unsigned32_t>());
00047       c_id->add(e);
00048       grp.add(c_id);
00049 
00050       // Populate provider id
00051       pid = pInfo.id_;
00052    }
00053 
00054    // Add the Provider name to group
00055    AAAAvpContainer *c_name = cm.acquire("Provider-Name");
00056    e = em.acquire(AAA_AVP_UTF8_STRING_TYPE);
00057    diameter_utf8string_t &pname = e->dataRef(Type2Type<diameter_utf8string_t>());
00058    c_name->add(e);
00059    grp.add(c_name);
00060    
00061    // Populate provider name
00062    pname.assign(pInfo.name_.data(), pInfo.name_.length());
00063 }
00064 
00065 void PANA_ProviderInfoTool::Extract(diameter_grouped_t &grp, PANA_CfgProviderInfo &pInfo)
00066 {
00067    if (AAAAvpContainer *c_name = grp.search("Provider-Name")) {
00068       diameter_utf8string_t &name = (*c_name)[0]->dataRef(Type2Type<diameter_utf8string_t>());
00069       pInfo.name_.assign(name.data(), name.length());
00070    }
00071 
00072    if (AAAAvpContainer *c_id = grp.search("Provider-Identifier")) {
00073       diameter_unsigned32_t &id = (*c_id)[0]->dataRef(Type2Type<diameter_unsigned32_t>());
00074       pInfo.id_ = id;
00075    }
00076 }
00077 
00078 
00079 

Generated on Fri Jun 25 19:18:30 2004 for PANA by doxygen 1.3.5