コード例 #1
0
ファイル: main.go プロジェクト: sguzwf/ouster
func readRaw(reader io.Reader, raw *packet.RawPacket, buf []byte) (err error) {
	var sz uint32

	err = binary.Read(reader, binary.LittleEndian, &raw.Id)
	if err != nil {
		return
	}

	err = binary.Read(reader, binary.LittleEndian, &sz)
	if err != nil {
		return
	}

	err = binary.Read(reader, binary.LittleEndian, &raw.Seq)
	if err != nil {
		return
	}

	if sz > uint32(len(buf)) {
		return errors.New("packet size too large")
	}

	n, err := io.ReadFull(reader, buf[:sz])
	if err != nil {
		return
	}
	if n != int(sz) {
		err = errors.New("read get less data than needed")
		return
	}

	raw.Data = buf[:sz]
	return nil
}