in mfg/meta.go [165:200]
func (tlv *MetaTlv) StructuredBody() (interface{}, error) {
r := bytes.NewReader(tlv.Data)
readBody := func(dst interface{}) error {
if err := binary.Read(r, binary.LittleEndian, dst); err != nil {
return errors.Wrapf(err, "error parsing TLV data")
}
return nil
}
switch tlv.Header.Type {
case META_TLV_TYPE_HASH:
var body MetaTlvBodyHash
if err := readBody(&body); err != nil {
return nil, err
}
return &body, nil
case META_TLV_TYPE_FLASH_AREA:
var body MetaTlvBodyFlashArea
if err := readBody(&body); err != nil {
return nil, err
}
return &body, nil
case META_TLV_TYPE_MMR_REF:
var body MetaTlvBodyMmrRef
if err := readBody(&body); err != nil {
return nil, err
}
return &body, nil
default:
return nil, errors.Errorf("unknown meta TLV type: %d", tlv.Header.Type)
}
}