00001 // OSB library ************************************************ -*- C++ -*- 00006 /* 00007 AUTHOR(S): Stephan Broennimann (vb) 00008 00009 RCS information 00010 $Name: OSB_060808 $ 00011 $Revision: 1.1.2.2 $ 00012 00013 License 00014 OSB rating and billing library for communication networks 00015 Copyright (C) 2004, 2005, 2006 OSB systems 00016 00017 This file may be distributed and/or modify under the terms of the 00018 GNU General Public License (GPL) as published by the Free Software 00019 Foundation which is provided in the file LICENSE.GPL included in the 00020 packaging of this file. 00021 00022 The file is distributed in the hope that it will be useful, but WITHOUT 00023 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00024 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00025 for more details. 00026 00027 Holders of a OSB Commercial License may use this file under the terms 00028 and conditions of this commercial license. 00029 */ 00030 #ifndef _RPEVALTRKGRP_H_ 00031 #define _RPEVALTRKGRP_H_ 00032 00033 // ************************************************************************ 00034 // included header files 00035 // + standard includes 00036 00037 // + libraries 00038 00039 // + local headers 00040 #include "rpeval.h" 00041 00042 // + class declarations 00043 namespace OSB_LIB { 00044 class NetworkElement; 00045 } 00046 00047 // ************************************************************************ 00048 // namespace extensions 00049 namespace OSB_LIB { 00050 00051 // ************************************************************************ 00052 // forward declarations 00053 00054 // ************************************************************************ 00055 // type definitions 00056 00057 // ************************************************************************ 00058 // class definitions 00062 class RpEvalTrunk : public RatedPartyEval { 00063 public: 00065 enum Param { 00067 paramAllowEmpty = 0, 00068 00070 paramNumParam 00071 }; 00072 00073 public: 00075 RpEvalTrunk( 00076 const Oid& oid, 00077 const RpType& rpType 00078 ); 00079 00080 public: 00086 bool requiresCache() const; 00087 00089 00090 00091 int numParam() const; 00092 00099 bool mandatory() const; 00100 00104 void setMandatory(bool mandat); 00106 00107 protected: 00116 const NetworkElement* getElement( 00117 const OSB_LIB::Cdr& cdr 00118 ) const; 00119 00120 private: 00128 bool setParam( 00129 int index, 00130 const std::string& param 00131 ); 00132 00140 std::string getParam(int index) const; 00141 00142 private: 00148 bool mandatory_; 00149 00151 00152 00153 mutable Id2<NetworkElement> neId_; 00155 mutable const NetworkElement* pElement_; 00157 }; // class RpEvalTrunk 00158 00168 class RpeInTrunk : public RpEvalTrunk { 00169 public: 00171 static const Type type_; 00172 00173 public: 00175 RpeInTrunk( 00176 const Oid& oid, 00177 const RpType& rpType 00178 ); 00179 00180 public: 00184 Type type() const; 00203 Result getParty( 00204 const Cdr& cdr, 00205 RatedParty* rp, 00206 OsbError* error 00207 ) const; 00208 }; // class RpeInTrunk 00209 00219 class RpeOutTrunk : public RpEvalTrunk { 00220 public: 00222 static const Type type_; 00223 00224 public: 00226 RpeOutTrunk( 00227 const Oid& oid, 00228 const RpType& rpType 00229 ); 00230 00231 public: 00235 Type type() const; 00254 Result getParty( 00255 const Cdr& cdr, 00256 RatedParty* rp, 00257 OsbError* error 00258 ) const; 00259 }; // class RpeOutTrunk 00260 } // namespace OSB_LIB 00261 00262 // ************************************************************************ 00263 // inline definitions 00264 namespace OSB_LIB { 00265 } // namespace OSB_LIB 00266 #endif // #ifndef _RPEVALTRKGRP_H_