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
}