Package ru.bitel.bgbilling.kernel.network.radius

# Class RadiusPacket

java.lang.Object
ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet
ru.bitel.bgbilling.kernel.network.radius.RadiusPacket

All Implemented Interfaces:
  `Cloneable`

public class RadiusPacket extends RadiusAttributeSet
Радиус пакет. Этот класс расширяет набор атрибутов `RadiusAttributeSet`.

See Also:
  - `RadiusAttributeSet`
  - `RadiusDictionary`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `RadiusPacket.RadiusPacketOption<T>`
  Класс, объекты которого используются для установки `setOption(RadiusPacketOption, Object)` и для получения `getOption(RadiusPacketOption)`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final byte`
  `ACCESS_ACCEPT`
  `static final byte`
  `ACCESS_CHALLENGE`
  `static final byte`
  `ACCESS_REJECT`
  `static final byte`
  `ACCESS_REQUEST`
  `static final byte`
  `ACCOUNTING_MESSAGE`
  `static final byte`
  `ACCOUNTING_REQUEST`
  `static final byte`
  `ACCOUNTING_RESPONSE`
  `static final byte`
  `ACCOUNTING_STATUS`
  `static final byte`
  `ACCOUNTING_STATUS_START`
  `static final byte`
  `ACCOUNTING_STATUS_STOP`
  `static final byte`
  `ACCOUNTING_STATUS_UPDATE`
  `protected byte[]`
  `authenticator`
  Для пришедшего запроса это authenticator который хранится в запросе,
  для создаваемого запроса - null.
  `static final byte`
  `CoA_ACK`
  `static final byte`
  `CoA_NAK`
  `static final byte`
  `CoA_REQUEST`
  `static final byte`
  `DISCONNECT_ACK`
  `static final byte`
  `DISCONNECT_NAK`
  `static final byte`
  `DISCONNECT_REQUEST`
  `final byte`
  `identifier`
  Идентификатор пакета.
  `protected final byte[]`
  `messageAuthenticator`
  Атрибут для подписи пакета `RadiusDictionary.Message_Authenticator`.
  Используется в EAP.
  `static final byte`
  `PASSWORD_ACCEPT`
  `static final byte`
  `PASSWORD_REJECT`
  `static final byte`
  `PASSWORD_REQUEST`
  `protected final byte[]`
  `requestAuthenticator`
  Для создаваемого ответа - это authenticator запроса.
  `static final byte`
  `STATUS_CLIENT`
  `static final byte`
  `STATUS_SERVER`

  ### Fields inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet

  `standartAttributes, vendorAttributes`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `RadiusPacket(byte code, byte identifier)`
  Создание радиус пакета (запрос).
  `protected`
  `RadiusPacket(byte code, byte identifier, byte[] requestAuthenticator, byte[] authenticator, byte[] messageAuthenticator, Map<Integer,List<RadiusAttribute<?>>> standartAttributes, Map<Integer,Map<Integer,List<RadiusAttribute<?>>>> vendorAttributes, Map<String,Object> optionMap)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addOptions(RadiusPacket request)`
  `RadiusPacket`
  `clone()`
  `RadiusPacket`
  `createResponse()`
  Создание пакета-ответа из пакета-запроса.
  `void`
  `fromPacket(RadiusPacket lastResponsePacket)`
  `byte[]`
  `getAuthenticator()`
  `byte`
  `getCode()`
  Получение типа пакета (например, `ACCESS_REQUEST` `ACCOUNTING_REQUEST`).
  `Object`
  `getOption(String option)`
  Deprecated.
  `<O> O`
  `getOption(RadiusPacket.RadiusPacketOption<O> option)`
  Получение опции(атрибута) из пакета.
  `<O> O`
  `getOption(RadiusPacket.RadiusPacketOption<O> option, O value)`
  Получение опции(атрибута) из пакета.
  `String`
  `getPacketTypeString()`
  Получение названия типа radius-пакета
  `Trace`
  `getTrace()`
  `boolean`
  `isRequest()`
  `static RadiusPacket`
  `parse(ByteBuffer bb)`
  Парсинг пакета из ByteBuffer.
  `static RadiusPacket`
  `parse(ByteBuffer byteBuffer, boolean move)`
  Парсинг пакета из ByteBuffer.
  `void`
  `setCode(byte code)`
  Установка типа пакета.
  `void`
  `setOption(String option, Object value)`
  Deprecated.
  `<O> void`
  `setOption(RadiusPacket.RadiusPacketOption<O> option, O value)`
  Установка опции в пакет.
  `String`
  `toString()`
  `void`
  `write(ByteBuffer bb, byte[] key)`
  Сериализация пакета в ByteBuffer.

  ### Methods inherited from class ru.bitel.bgbilling.kernel.network.radius.RadiusAttributeSet

  `addAttribute, addAttributes, contains, equals, getAttribute, getAttributes, getAttributeValue, getAttributeValue, getByteAttribute, getIntAttribute, getRadiusAttributeSet, getRadiusAttributeSet, getStringAttribute, getStringAttribute, isEmpty, newRadiusAttributeRealmMap, newRadiusAttributeSet, newRadiusAttributeSet, newRadiusAttributeSetMap, newRadiusAttributeSetRealmMap, removeAttributes, setAttribute, setAttributes, setAttributes, setByteAttribute, setIntAttribute, setStringAttribute, toString`

  ### Methods inherited from class java.lang.Object

  `finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### ACCESS_REQUEST

    public static final byte ACCESS_REQUEST
    See Also:
      - Constant Field Values

  - ### ACCESS_ACCEPT

    public static final byte ACCESS_ACCEPT
    See Also:
      - Constant Field Values

  - ### ACCESS_REJECT

    public static final byte ACCESS_REJECT
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_REQUEST

    public static final byte ACCOUNTING_REQUEST
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_RESPONSE

    public static final byte ACCOUNTING_RESPONSE
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_STATUS

    public static final byte ACCOUNTING_STATUS
    See Also:
      - Constant Field Values

  - ### PASSWORD_REQUEST

    public static final byte PASSWORD_REQUEST
    See Also:
      - Constant Field Values

  - ### PASSWORD_ACCEPT

    public static final byte PASSWORD_ACCEPT
    See Also:
      - Constant Field Values

  - ### PASSWORD_REJECT

    public static final byte PASSWORD_REJECT
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_MESSAGE

    public static final byte ACCOUNTING_MESSAGE
    See Also:
      - Constant Field Values

  - ### ACCESS_CHALLENGE

    public static final byte ACCESS_CHALLENGE
    See Also:
      - Constant Field Values

  - ### STATUS_SERVER

    public static final byte STATUS_SERVER
    See Also:
      - Constant Field Values

  - ### STATUS_CLIENT

    public static final byte STATUS_CLIENT
    See Also:
      - Constant Field Values

  - ### DISCONNECT_REQUEST

    public static final byte DISCONNECT_REQUEST
    See Also:
      - Constant Field Values

  - ### DISCONNECT_ACK

    public static final byte DISCONNECT_ACK
    See Also:
      - Constant Field Values

  - ### DISCONNECT_NAK

    public static final byte DISCONNECT_NAK
    See Also:
      - Constant Field Values

  - ### CoA_REQUEST

    public static final byte CoA_REQUEST
    See Also:
      - Constant Field Values

  - ### CoA_ACK

    public static final byte CoA_ACK
    See Also:
      - Constant Field Values

  - ### CoA_NAK

    public static final byte CoA_NAK
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_STATUS_START

    public static final byte ACCOUNTING_STATUS_START
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_STATUS_STOP

    public static final byte ACCOUNTING_STATUS_STOP
    See Also:
      - Constant Field Values

  - ### ACCOUNTING_STATUS_UPDATE

    public static final byte ACCOUNTING_STATUS_UPDATE
    See Also:
      - Constant Field Values

  - ### identifier

    public final byte identifier
    Идентификатор пакета.

  - ### requestAuthenticator

    protected final byte[] requestAuthenticator
    Для создаваемого ответа - это authenticator запроса.

  - ### authenticator

    protected byte[] authenticator
    Для пришедшего запроса это authenticator который хранится в запросе,
    для создаваемого запроса - null.

  - ### messageAuthenticator

    protected final byte[] messageAuthenticator
    Атрибут для подписи пакета `RadiusDictionary.Message_Authenticator`.
    Используется в EAP.

- ## Constructor Details

  - ### RadiusPacket

    protected RadiusPacket(byte code, byte identifier, byte[] requestAuthenticator, byte[] authenticator, byte[] messageAuthenticator, Map<Integer,List<RadiusAttribute<?>>> standartAttributes, Map<Integer,Map<Integer,List<RadiusAttribute<?>>>> vendorAttributes, Map<String,Object> optionMap)

  - ### RadiusPacket

    public RadiusPacket(byte code, byte identifier)
    Создание радиус пакета (запрос).
    Parameters:
      `code` - - тип пакета (например, 0x28)
      `identifier` - - идентификатор пакета.

- ## Method Details

  - ### getCode

    public byte getCode()
    Получение типа пакета (например, `ACCESS_REQUEST` `ACCOUNTING_REQUEST`).
    Returns:

  - ### setCode

    public void setCode(byte code)
    Установка типа пакета.
    Parameters:
      `code` -

  - ### isRequest

    public boolean isRequest()

  - ### write

    public void write(ByteBuffer bb, byte[] key) throws InvalidKeyException, NoSuchAlgorithmException
    Сериализация пакета в ByteBuffer.
    Parameters:
      `bb` - - буфер
      `key` - - секрет наса.
    Throws:
      `InvalidKeyException`
      `NoSuchAlgorithmException`

  - ### parse

    public static RadiusPacket parse(ByteBuffer bb) throws ru.bitel.bgbilling.common.BGException
    Парсинг пакета из ByteBuffer.
    Parameters:
      `bb` -
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### parse

    public static RadiusPacket parse(ByteBuffer byteBuffer, boolean move) throws ru.bitel.bgbilling.common.BGException
    Парсинг пакета из ByteBuffer.
    Parameters:
      `byteBuffer` -
    Returns:
    Throws:
      `ru.bitel.bgbilling.common.BGException`

  - ### createResponse

    public RadiusPacket createResponse()
    Создание пакета-ответа из пакета-запроса.
    Returns:

  - ### getOption

    public <O> O getOption(RadiusPacket.RadiusPacketOption<O> option)
    Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет null.
    Parameters:
      `option` -
    Returns:
    See Also:
      - `setOption(RadiusPacketOption, Object)`
      - `RadiusPacket.RadiusPacketOption`

  - ### getOption

    public <O> O getOption(RadiusPacket.RadiusPacketOption<O> option, O value)
    Получение опции(атрибута) из пакета. Если такая опция не была установлена - метод вернет value.
    Parameters:
      `option` -
      `value` - - значение по умолчанию
    Returns:
    See Also:
      - `setOption(RadiusPacketOption, Object)`
      - `RadiusPacket.RadiusPacketOption`

  - ### setOption

    public <O> void setOption(RadiusPacket.RadiusPacketOption<O> option, O value)
    Установка опции в пакет.
    Parameters:
      `option` -
      `value` -
    See Also:
      - `RadiusPacket.RadiusPacketOption`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `RadiusAttributeSet`

  - ### getPacketTypeString

    public String getPacketTypeString()
    Получение названия типа radius-пакета
    Returns:
      тип пакета

  - ### fromPacket

    public void fromPacket(RadiusPacket lastResponsePacket)

  - ### getTrace

    public Trace getTrace()

  - ### getOption

    @Deprecated public Object getOption(String option)
    Deprecated.
    Для обратной совместимости со скриптами
    Parameters:
      `option` -
    Returns:

  - ### setOption

    @Deprecated public void setOption(String option, Object value)
    Deprecated.
    Для обратной совместимости со скриптами
    Parameters:
      `option` -
      `value` -

  - ### clone

    public RadiusPacket clone()
    Overrides:
      `clone` in class `Object`

  - ### getAuthenticator

    public byte[] getAuthenticator()

  - ### addOptions

    public void addOptions(RadiusPacket request)