func()

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
}