Class TlvInfo<I extends TlvInfo<I,?,H>,V,H extends TlvHeader>

java.lang.Object
ru.bitel.bgbilling.kernel.network.tlv.TlvInfo<I,V,H>
All Implemented Interfaces:
Iterable<I>
Direct Known Subclasses:
RadiusAttributeInfo

public abstract class TlvInfo<I extends TlvInfo<I,?,H>,V,H extends TlvHeader> extends Object implements Iterable<I>
  • Field Details

  • Constructor Details

    • TlvInfo

      public TlvInfo(Class<?> clazz, int type, String name, int valueType, int paramTypeSize, int paramLengthSize, List<I> children)
  • Method Details

    • setParent

      public void setParent(I parent)
    • getChild

      public I getChild(int type)
    • getChild

      public I getChild(String name)
    • iterator

      public Iterator<I> iterator()
      Specified by:
      iterator in interface Iterable<I extends TlvInfo<I,?,H>>
    • read

      public abstract Tlv<?,?> read(ByteBuffer bb, H header)
    • unwrapValue

      public abstract V unwrapValue(ByteBuffer data)
    • wrapValue

      public abstract ByteBuffer wrapValue(V value)
    • valueToString

      public String valueToString(Tlv<?,V> attribute)
    • sliceData

      protected final ByteBuffer sliceData(ByteBuffer bb, int length)
      Получения ByteBuffer содержащего data
      Parameters:
      bb -
      length -
      Returns:
    • readTypeLength

      public void readTypeLength(ByteBuffer bb, H header, int parentLength, boolean headerInLength)
      Считывание типа и длины. Обычно это производится родительской веткой, т.к. она знает какой размер у полей типа и длина.
      Частный случай родительской ветки - vendor
      Parameters:
      bb -
      header -
      parentLength -
      headerInLength -