package packet

import (
	"bytes"

	"github.com/bio-routing/bio-rd/util/decoder"
)

const (
	MinInformationTLVLen = 4
)

// InformationTLV represents an information TLV
type InformationTLV struct {
	InformationType   uint16
	InformationLength uint16
	Information       []byte
}

func decodeInformationTLV(buf *bytes.Buffer) (*InformationTLV, error) {
	infoTLV := &InformationTLV{}

	fields := []interface{}{
		&infoTLV.InformationType,
		&infoTLV.InformationLength,
	}

	err := decoder.Decode(buf, fields)
	if err != nil {
		return infoTLV, err
	}

	infoTLV.Information = make([]byte, infoTLV.InformationLength)
	fields = []interface{}{
		&infoTLV.Information,
	}

	err = decoder.Decode(buf, fields)
	if err != nil {
		return infoTLV, err
	}

	return infoTLV, nil
}