func NewGetPBRecordsResult()

in datahub/resultmodel.go [475:524]


func NewGetPBRecordsResult(data []byte, schema *RecordSchema, commonResp *CommonResponseResult) (*GetRecordsResult, error) {
	data, err := util.UnwrapMessage(data)
	if err != nil {
		return nil, err
	}
	grr := &pbmodel.GetRecordsResponse{}
	if err := proto.Unmarshal(data, grr); err != nil {
		return nil, err
	}

	result := &GetRecordsResult{
		CommonResponseResult: *commonResp,
		RecordSchema:         schema,
	}
	if grr.NextCursor != nil {
		result.NextCursor = *(grr.NextCursor)
	}
	if grr.StartSequence != nil {
		result.StartSequence = *grr.StartSequence
	}
	if grr.LatestSequence != nil {
		result.LatestSequence = *grr.LatestSequence
	}
	if grr.LatestTime != nil {
		result.LatestTime = *grr.LatestTime
	}
	if grr.RecordCount != nil {
		result.RecordCount = int(*grr.RecordCount)
		if result.RecordCount > 0 {
			result.Records = make([]IRecord, result.RecordCount)
			for idx, record := range grr.Records {
				//Tuple topic
				if result.RecordSchema != nil {
					tr := NewTupleRecord(result.RecordSchema, *record.SystemTime)
					if err := fillTupleData(tr, record); err != nil {
						return nil, err
					}
					result.Records[idx] = tr
				} else {
					br := NewBlobRecord(record.Data.Data[0].Value, *record.SystemTime)
					if err := fillBlobData(br, record); err != nil {
						return nil, err
					}
					result.Records[idx] = br
				}
			}
		}
	}
	return result, nil
}