func ReadRecord()

in util.go [54:80]


func ReadRecord(r io.Reader) (*proto.RequestHeader, jute.RecordReader, error) {
	dec, err := createDecoder(r)
	if err != nil {
		return nil, nil, fmt.Errorf("error reading request length: %w", err)
	}

	header := &proto.RequestHeader{}
	if err = dec.ReadRecord(header); err != nil {
		return nil, nil, fmt.Errorf("error reading RequestHeader: %w", err)
	}

	var req jute.RecordReader
	switch header.Type {
	case opGetData:
		req = &proto.GetDataRequest{}
	case opGetChildren:
		req = &proto.GetChildrenRequest{}
	default:
		return nil, nil, fmt.Errorf("unrecognized header type: %d", header.Type)
	}

	if err := dec.ReadRecord(req); err != nil {
		return nil, nil, fmt.Errorf("error reading request: %w", err)
	}

	return header, req, nil
}