in datahub/binaryrecord.go [450:482]
func (serializer *binaryRecordContextSerializer) deserializeBinaryRecord(reader *bytes.Reader) (*binaryRecord, error) {
bHeader, err := serializer.deserializeRecordHeader(reader)
if err != nil {
return nil, err
}
// 读取header完成之后重置到读header之前的位点
if _, err := reader.Seek(-int64(binaryRecordHeaderSize), io.SeekCurrent); err != nil {
return nil, err
}
if reader.Len() < int(bHeader.totalSize) {
return nil, fmt.Errorf("check record header length fail, need: %d, real: %d", bHeader.totalSize, reader.Len())
}
var schema *RecordSchema = nil
if bHeader.schemaVersion != -1 {
if serializer.schemaClient != nil {
schema, err = serializer.getSchemeByVersion(int(bHeader.schemaVersion))
if err != nil {
return nil, err
}
} else {
schema = serializer.schema
}
}
buf := make([]byte, bHeader.totalSize)
if _, err = reader.Read(buf); err != nil {
return nil, err
}
return newBinaryRecordForDeserialize(buf, bHeader, schema), nil
}