func (d *Data) UnMarshal(buf []byte) error { n := len(buf) r := bytes.NewReader(buf) err := binary.Read(r, binary.BigEndian, &d.Head) if err != nil { return err } d.SubData = []SubData{} for i := binary.Size(d.Head); i < n; { sub := SubData{} err = binary.Read(r, binary.BigEndian, &sub.Head) if err != nil { return err } i += int(binary.Size(sub.Head)) sub.Params = []tlv.TLV{} for j := 0; j < int(sub.Head.ParamsCount); j++ { param := tlv.TLV{} param.FromBinary(r) i += int(param.Length()) sub.Params = append(sub.Params, param) } d.SubData = append(d.SubData, sub) } return nil }
func (e *Event) UnMarshal(buf []byte) error { n := len(buf) r := bytes.NewReader(buf) err := binary.Read(r, binary.BigEndian, &e.Head) if err != nil { return err } e.Params = []tlv.TLV{} for i := binary.Size(e.Head); i < n; { tlv := tlv.TLV{} tlv.FromBinary(r) i += int(tlv.Length()) e.Params = append(e.Params, tlv) } return nil }