in internal/encoding/types.go [1389:1425]
func (a *arrayTimestamp) Unmarshal(r *buffer.Buffer) error {
length, err := readArrayHeader(r)
if err != nil {
return err
}
type_, err := readType(r)
if err != nil {
return err
}
if type_ != TypeCodeTimestamp {
return fmt.Errorf("invalid type for []time.Time %02x", type_)
}
const typeSize = 8
buf, ok := r.Next(length * typeSize)
if !ok {
return fmt.Errorf("invalid length %d", length)
}
aa := (*a)[:0]
if int64(cap(aa)) < length {
aa = make([]time.Time, length)
} else {
aa = aa[:length]
}
var bufIdx int
for i := range aa {
ms := int64(binary.BigEndian.Uint64(buf[bufIdx:]))
bufIdx += typeSize
aa[i] = time.Unix(ms/1000, (ms%1000)*1000000).UTC()
}
*a = aa
return nil
}