9 #ifndef anna_diameter_codec_Avp_hpp 10 #define anna_diameter_codec_Avp_hpp 87 using namespace basetypes;
131 int a_insertionPositionForChilds;
153 avp_container a_avps;
165 find_container a_finds;
174 static avp_iterator avp_find(avp_container &avps, AvpId
id,
unsigned int position) ;
175 static const_avp_iterator avp_find(
const avp_container &avps, AvpId
id,
unsigned int position) {
176 return (const_avp_iterator)avp_find((avp_container &)avps,
id, position);
178 static Avp * addAvp(avp_container &avps,
int &insertionPositionForChilds, AvpId
id,
Engine *engine) ;
179 static bool removeAvp(avp_container &avps, find_container &finds, AvpId
id,
int ocurrence,
Engine *engine) ;
183 static int countAvp(
const avp_container &avps, AvpId
id) ;
184 static const Avp* firstAvp(
const avp_container &avps, AvpId
id) ;
185 static int countChilds(
const avp_container &avps) ;
186 static int addChild(avp_container &avps,
int &insertionPositionForChilds,
Avp *avp) {
189 avps[insertionPositionForChilds++] = avp;
190 return insertionPositionForChilds;
197 avp_iterator avp_begin() {
return a_avps.begin(); }
198 avp_iterator avp_end() {
return a_avps.end(); }
199 static Avp* avp(avp_iterator ii) {
return ii->second; }
200 const_avp_iterator avp_begin()
const {
return a_avps.begin(); }
201 const_avp_iterator avp_end()
const {
return a_avps.end(); }
202 static const Avp* avp(const_avp_iterator ii) {
return ii->second; }
205 bool flagsOK()
const ;
206 int addChild(
Avp *avp) noexcept(
false) { assertFormat(
"Grouped");
return addChild(a_avps, a_insertionPositionForChilds, avp); }
207 bool hasChildren() {
return a_avps.size() != 0; }
209 static bool contain(const_avp_iterator begin, const_avp_iterator end,
const Avp *parent) {
return true; }
251 virtual void initializeByFormat() {};
321 virtual void clearByFormat() {};
331 virtual Engine * getEngine()
const noexcept(
false);
341 void assertFormat(
const std::string &name)
const noexcept(
false);
349 U24 getLength()
const ;
404 void setEngine(
Engine *engine) ;
437 void clear() noexcept(false);
448 void setId(AvpId
id) noexcept(false);
453 void setId(const
char *name) noexcept(false);
466 void setMandatoryBit(
bool activate = true) {
if(activate) a_flags |= MBitMask;
else a_flags &= (~MBitMask); }
475 void setEncryptionBit(
bool activate =
true) {
if(activate) a_flags |= PBitMask;
else a_flags &= (~PBitMask); }
486 Avp *
addAvp(AvpId
id) noexcept(
false) { assertFormat(
"Grouped");
return addAvp(a_avps, a_insertionPositionForChilds,
id, getEngine()); }
492 Avp * addAvp(
const char *name) noexcept(
false);
505 Avp * addAvp(
Avp * avp) noexcept(
false);
526 Time *
getTime() noexcept(false) { assertFormat(
"Time");
return a_Time; }
552 bool removeAvp(AvpId
id,
int ocurrence = 1) noexcept(false) { assertFormat(
"Grouped");
return removeAvp(a_avps, (find_container&)a_finds,
id, ocurrence, getEngine()); }
558 bool removeAvp(
const char *name,
int ocurrence = 1) noexcept(
false);
565 const AvpId &
getId()
const {
return a_id; }
578 bool vendorBit()
const {
return ((a_flags & VBitMask) != 0x00); }
598 const Float32 *
getFloat32() const noexcept(false) { assertFormat(
"Float32");
return a_Float32; }
600 const Float64 *
getFloat64() const noexcept(false) { assertFormat(
"Float64");
return a_Float64; }
633 return _getAvp(
id, ocurrence, emode);
637 return const_cast<Avp*
>(_getAvp(
id, ocurrence, emode));
644 return _getAvp(name, ocurrence, emode);
648 return const_cast<Avp*
>(_getAvp(name, ocurrence, emode));
654 const Address *
getAddress() const noexcept(false) { assertFormat(
"Address");
return a_Address; }
656 const Time *
getTime() const noexcept(false) { assertFormat(
"Time");
return a_Time; }
670 const Unknown *
getUnknown() const noexcept(false) { assertFormat(
"Unknown");
return a_Unknown; }
701 void code(
char* buffer,
int &size)
const noexcept(
false);
720 std::string asXMLString(
bool normalize =
false)
const ;
740 bool isLike(
const std::string &pattern)
const ;
747 int countAvp(AvpId
id)
const noexcept(
false) { assertFormat(
"Grouped");
return countAvp(a_avps,
id); }
752 int countAvp(
const char *name)
const noexcept(
false);
770 virtual void unknownAvpWithMandatoryBit()
const noexcept(
false);
Definition: Exception.hpp:26
const Address * getAddress() const noexcept(false)
Definition: Avp.hpp:654
Definition: Float64.hpp:33
Definition: Unsigned64.hpp:32
static const int HeaderLengthVactive
Definition: Avp.hpp:408
Engine * a_engine
Definition: Avp.hpp:321
static const U8 VBitMask
Definition: Avp.hpp:421
std::pair< AvpId, unsigned int > find_key
Definition: Avp.hpp:82
avp_container::const_iterator const_avp_iterator
Definition: Avp.hpp:79
Definition: Engine.hpp:42
Time * getTime() noexcept(false)
Definition: Avp.hpp:526
OctetString * getOctetString() noexcept(false)
Definition: Avp.hpp:510
_v
Definition: Exception.hpp:26
int countAvp(AvpId id) const noexcept(false)
Definition: Avp.hpp:747
Integer32 * getInteger32() noexcept(false)
Definition: Avp.hpp:512
const Integer32 * getInteger32() const noexcept(false)
Definition: Avp.hpp:590
static const U8 MBitMask
Definition: Avp.hpp:422
Definition: IPFilterRule.hpp:30
Float32 * getFloat32() noexcept(false)
Definition: Avp.hpp:520
const UTF8String * getUTF8String() const noexcept(false)
Definition: Avp.hpp:658
const OctetString * getOctetString() const noexcept(false)
Definition: Avp.hpp:588
const Avp * getAvp(AvpId id, int ocurrence=1, anna::Exception::Mode::_v emode=anna::Exception::Mode::Throw) const noexcept(false)
Definition: Avp.hpp:632
QoSFilterRule * getQoSFilterRule() noexcept(false)
Definition: Avp.hpp:538
Definition: Address.hpp:67
Enumerated * getEnumerated() noexcept(false)
Definition: Avp.hpp:534
Definition: UTF8String.hpp:30
Avp * getAvp(AvpId id, int ocurrence=1, anna::Exception::Mode::_v emode=anna::Exception::Mode::Throw) noexcept(false)
Definition: Avp.hpp:636
std::map< find_key, Avp * >::iterator find_iterator
Definition: Avp.hpp:84
bool mandatoryBit() const
Definition: Avp.hpp:581
static const U8 PBitMask
Definition: Avp.hpp:423
Definition: Unknown.hpp:30
Definition: Float32.hpp:33
Definition: Integer64.hpp:32
const Integer64 * getInteger64() const noexcept(false)
Definition: Avp.hpp:592
const DiameterURI * getDiameterURI() const noexcept(false)
Definition: Avp.hpp:662
const IPFilterRule * getIPFilterRule() const noexcept(false)
Definition: Avp.hpp:666
std::pair< S32, S32 > AvpId
Definition: defines.hpp:31
const Float64 * getFloat64() const noexcept(false)
Definition: Avp.hpp:600
const Enumerated * getEnumerated() const noexcept(false)
Definition: Avp.hpp:664
std::string asXMLString(bool normalize=false) const
const DiameterIdentity * getDiameterIdentity() const noexcept(false)
Definition: Avp.hpp:660
Unsigned32 * getUnsigned32() noexcept(false)
Definition: Avp.hpp:516
Definition: OctetString.hpp:30
Definition: Attribute.hpp:35
DiameterURI * getDiameterURI() noexcept(false)
Definition: Avp.hpp:532
Definition: Integer32.hpp:32
const anna::diameter::stack::Avp * getStackAvp() const noexcept(false)
Definition: Avp.hpp:575
Definition: Message.hpp:74
int getVendorId() const
Definition: Avp.hpp:570
Avp * getAvp(const char *name, int ocurrence=1, anna::Exception::Mode::_v emode=anna::Exception::Mode::Throw) noexcept(false)
Definition: Avp.hpp:647
U32 U24
Definition: defines.hpp:96
Definition: DiameterURI.hpp:30
Definition: QoSFilterRule.hpp:30
unsigned char U8
Definition: defines.hpp:62
Definition: Enumerated.hpp:32
Definition: Dictionary.hpp:50
Integer64 * getInteger64() noexcept(false)
Definition: Avp.hpp:514
static const int HeaderLengthVinactive
Definition: Avp.hpp:409
void setEncryptionBit(bool activate=true)
Definition: Avp.hpp:475
const Unsigned64 * getUnsigned64() const noexcept(false)
Definition: Avp.hpp:596
avprule_container::const_iterator const_avprule_iterator
Definition: Avp.hpp:46
Definition: DiameterIdentity.hpp:30
Definition: Unsigned32.hpp:32
Unsigned64 * getUnsigned64() noexcept(false)
Definition: Avp.hpp:518
bool removeAvp(AvpId id, int ocurrence=1) noexcept(false)
Definition: Avp.hpp:552
const Time * getTime() const noexcept(false)
Definition: Avp.hpp:656
const Float32 * getFloat32() const noexcept(false)
Definition: Avp.hpp:598
bool vendorBit() const
Definition: Avp.hpp:578
Address * getAddress() noexcept(false)
Definition: Avp.hpp:524
IPFilterRule * getIPFilterRule() noexcept(false)
Definition: Avp.hpp:536
const Unsigned32 * getUnsigned32() const noexcept(false)
Definition: Avp.hpp:594
UTF8String * getUTF8String() noexcept(false)
Definition: Avp.hpp:528
DiameterIdentity * getDiameterIdentity() noexcept(false)
Definition: Avp.hpp:530
const Avp * getAvp(const char *name, int ocurrence=1, anna::Exception::Mode::_v emode=anna::Exception::Mode::Throw) const noexcept(false)
Definition: Avp.hpp:643
const AvpId & getId() const
Definition: Avp.hpp:565
bool encryptionBit() const
Definition: Avp.hpp:584
Float64 * getFloat64() noexcept(false)
Definition: Avp.hpp:522
std::map< find_key, Avp * > find_container
Definition: Avp.hpp:83
const QoSFilterRule * getQoSFilterRule() const noexcept(false)
Definition: Avp.hpp:668
Avp * addAvp(AvpId id) noexcept(false)
Definition: Avp.hpp:486
avp_container::iterator avp_iterator
Definition: Avp.hpp:78
const Unknown * getUnknown() const noexcept(false)
Definition: Avp.hpp:670
Definition: DataBlock.hpp:24
Definition: functions.hpp:118
Unknown * getUnknown() noexcept(false)
Definition: Avp.hpp:540
int countChilds() const noexcept(false)
Definition: Avp.hpp:759
std::map< int, Avp *> avp_container
Definition: Avp.hpp:74