/*
* Copyright (c) 2006 jDiameter.
* https://jdiameter.dev.java.net/
*
* License: Lesser General Public License (LGPL)
*
* e-mail: erick.svenson@yahoo.com
*
*/
package org.jdiameter.api;
import java.io.Serializable;
import java.net.InetAddress;
import java.util.Date;
/**
* A set of data representing a message avp set. AvpSet is simple container of avps allows direct access to Avp by Avp code
* or index of Avp. The AvpSet interface provides add/rem methods for appending new Avp and remove Avp from AvpSet.
* Wrapper interface allows adapt message to any driver vendor specific interface
* Serializable interface allows use this class in SLEE Event objects
* @version 1.5.1 Final
*/
public interface AvpSet extends Iterable<Avp>, Serializable, Wrapper {
/**
* get AVP by code
* @param avpCode code of Avp
* @return Avp instance
*/
Avp getAvp(int avpCode);
/**
* get AVP by position
* @param index position of Avp
* @return Avp instance
*/
Avp getAvpByIndex(int index);
/**
* get AVP by code
* @param avpCode code of Avp
* @param vendorId vendor of Avp
* @return Avp instance
*/
Avp getAvp(int avpCode, long vendorId);
/**
* get AVP by code
* @param avpCode code of Avp
* @return array Avp instance
*/
AvpSet getAvps(int avpCode);
/**
* get AVP by code
* @param avpCode code of Avp
* @param vendorId vendor of Avp
* @return array Avp instance
*/
AvpSet getAvps(int avpCode, long vendorId);
/**
* Remove AVPs with avpCode
* @param avpCode code of Avp
* @return array of removed Avps instance
*/
AvpSet removeAvp(int avpCode);
/**
* Remove Avp by Avp index
* @param index Avp position
* @return Avp instance
*/
Avp removeAvpByIndex(int index);
/**
* Return count of top Avps
* @return size of top Avps
*/
int size();
/**
* Return array of avp
* @return array of avp
*/
Avp[] asArray();
/**
* Append avp array as value
* @param value avp array
*/
void addAvp(Avp... value);
/**
* Append array of avps
* @param value avp array from AvpSet container
*/
void addAvp(AvpSet value);
/**
* Append byte[] AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, byte[] value);
/**
* Append byte[] AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, byte[] value, boolean mFlag, boolean pFlag);
/**
* Append byte[] AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, byte[] value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append int AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, int value);
/**
* Append int AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, int value, boolean mFlag, boolean pFlag);
/**
* Append int AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, int value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append long(integer64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, long value);
/**
* Append long(integer64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, long value, boolean mFlag, boolean pFlag);
/**
* Append long(integer64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, long value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append long(integer64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param asUnsignedInt32 true if value is unisignet integer 32 type
* @return Avp instance
*/
Avp addAvp(int avpCode, long value, boolean asUnsignedInt32);
/**
* Append long(integer64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asUnsignedInt32 true if value is unisignet integer 32 type
* @return Avp instance
*/
Avp addAvp(int avpCode, long value, boolean mFlag, boolean pFlag, boolean asUnsignedInt32);
/**
* Append long(integer64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asUnsignedInt32 true if value is unisignet integer 32 type
* @return Avp instance
*/
Avp addAvp(int avpCode, long value, long vendorId, boolean mFlag, boolean pFlag, boolean asUnsignedInt32);
/**
* Append float AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, float value);
/**
* Append float AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, float value, boolean mFlag, boolean pFlag);
/**
* Append float AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, float value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append double(float64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, double value);
/**
* Append double(float64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, double value, boolean mFlag, boolean pFlag);
/**
* Append double(float64) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, double value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append String(UTF-8 or Octet) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param asOctetString true if it octet string
* @return Avp instance
*/
Avp addAvp(int avpCode, String value, boolean asOctetString);
/**
* Append String(UTF-8 or Octet) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asOctetString true if it octet string
* @return Avp instance
*/
Avp addAvp(int avpCode, String value, boolean mFlag, boolean pFlag, boolean asOctetString);
/**
* Append String(UTF-8 or Octet) AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asOctetString true if it octet string
* @return Avp instance
*/
Avp addAvp(int avpCode, String value, long vendorId, boolean mFlag, boolean pFlag, boolean asOctetString);
/**
* Append URI AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, URI value);
/**
* Append URI AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, URI value, boolean mFlag, boolean pFlag);
/**
* Append URI AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, URI value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append Address AVP
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp addAvp(int avpCode, InetAddress value);
/**
* Append Address AVP
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, InetAddress value, boolean mFlag, boolean pFlag);
/**
* Append Address AVP
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, InetAddress value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append Diameter Time AVP
* @param avpCode code of Avp
* @param date value
* @return Avp instance
*/
Avp addAvp(int avpCode, Date date);
/**
* Append Diameter Time AVP
* @param avpCode code of Avp
* @param date value
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, Date date, boolean mFlag, boolean pFlag);
/**
* Append Diameter Time AVP
* @param avpCode code of Avp
* @param date value
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp addAvp(int avpCode, Date date, long vendorId, boolean mFlag, boolean pFlag);
/**
* Append Grouped AVP
* @param avpCode code of Avp
* @return AvpSet instance
*/
AvpSet addGroupedAvp(int avpCode);
/**
* Append Grouped AVP
* @param avpCode code of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return AvpSet instance
*/
AvpSet addGroupedAvp(int avpCode, boolean mFlag, boolean pFlag);
/**
* Append Grouped AVP
* @param avpCode code of Avp
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return AvpSet instance
*/
AvpSet addGroupedAvp(int avpCode, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert AvpSet
* @param index index of inserted avp
* @param value avp array
*/
void insertAvp(int index, Avp... value);
/**
* Insert AvpSet
* @param index index of inserted avp
* @param value avp array from AvpSet container
*/
void insertAvp(int index, AvpSet value);
/**
* Insert byte[] AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, byte[] value);
/**
* Insert byte[] AVP
* @param avpCode code of Avp
* @param index index of inserted avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, byte[] value, boolean mFlag, boolean pFlag);
/**
* Insert byte[] AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, byte[] value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert int AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index,int avpCode, int value);
/**
* Insertint AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, int value, boolean mFlag, boolean pFlag);
/**
* Insert int AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, int value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert long(integer64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, long value);
/**
* Insert long(integer64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, long value, boolean mFlag, boolean pFlag);
/**
* Insert long(integer64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, long value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert long(integer64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param asUnsignedInt32 true if value is unisignet integer 32 type
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, long value, boolean asUnsignedInt32);
/**
* Insert long(integer64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asUnsignedInt32 true if value is unisignet integer 32 type
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, long value, boolean mFlag, boolean pFlag, boolean asUnsignedInt32);
/**
* Insert long(integer64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asUnsignedInt32 true if value is unisignet integer 32 type
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, long value, long vendorId, boolean mFlag, boolean pFlag, boolean asUnsignedInt32);
/**
* Insert float AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, float value);
/**
* Insert float AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, float value, boolean mFlag, boolean pFlag);
/**
* Insert float AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, float value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert double(float64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, double value);
/**
* Insert double(float64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, double value, boolean mFlag, boolean pFlag);
/**
* Insert double(float64) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, double value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert String(UTF-8 or Octet) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param asOctetString true if it octet string
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, String value, boolean asOctetString);
/**
* Insert String(UTF-8 or Octet) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asOctetString true if it octet string
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, String value, boolean mFlag, boolean pFlag, boolean asOctetString);
/**
* Insert String(UTF-8 or Octet) AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @param asOctetString true if it octet string
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, String value, long vendorId, boolean mFlag, boolean pFlag, boolean asOctetString);
/**
* Insert URI AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, URI value);
/**
* Insert URI AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, URI value, boolean mFlag, boolean pFlag);
/**
* Insert URI AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, URI value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert Address AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, InetAddress value);
/**
* Insert Address AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, InetAddress value, boolean mFlag, boolean pFlag);
/**
* Insert Address AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param value Avp data
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, InetAddress value, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert Diameter Time AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param date value
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, Date date);
/**
* Insert Diameter Time AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param date value
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, Date date, boolean mFlag, boolean pFlag);
/**
* Insert Diameter Time AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param date value
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return Avp instance
*/
Avp insertAvp(int index, int avpCode, Date date, long vendorId, boolean mFlag, boolean pFlag);
/**
* Insert Grouped AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @return AvpSet instance
*/
AvpSet insertGroupedAvp(int index, int avpCode);
/**
* Insert Grouped AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return AvpSet instance
*/
AvpSet insertGroupedAvp(int index, int avpCode, boolean mFlag, boolean pFlag);
/**
* Insert Grouped AVP
* @param index index of inserted avp
* @param avpCode code of Avp
* @param vendorId vendor of Avp
* @param mFlag true set M flag/false clear M flag in header Avp
* @param pFlag true set P flag/false clear P flag in header Avp
* @return AvpSet instance
*/
AvpSet insertGroupedAvp(int index, int avpCode, long vendorId, boolean mFlag, boolean pFlag);
}