func()

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)
	}
}