MCPcopy
hub / github.com/grafana/tempo / PrepareForRead

Method PrepareForRead

pkg/model/v1/segment_decoder.go:26–45  ·  view source on GitHub ↗
(segments [][]byte)

Source from the content-addressed store, hash-verified

24}
25
26func (d *SegmentDecoder) PrepareForRead(segments [][]byte) (*tempopb.Trace, error) {
27 // each slice is a marshalled tempopb.Trace, unmarshal and combine
28 combiner := trace.NewCombiner(0, false)
29 for i, s := range segments {
30 t := &tempopb.Trace{}
31 err := proto.Unmarshal(s, t)
32 if err != nil {
33 return nil, fmt.Errorf("error unmarshaling trace: %w", err)
34 }
35
36 _, err = combiner.ConsumeWithFinal(t, i == len(segments)-1)
37 if err != nil {
38 return nil, fmt.Errorf("error combining trace: %w", err)
39 }
40 }
41
42 combinedTrace, _ := combiner.Result()
43
44 return combinedTrace, nil
45}
46
47func (d *SegmentDecoder) ToObject(segments [][]byte) ([]byte, error) {
48 // wrap byte slices in a tempopb.TraceBytes and marshal

Callers

nothing calls this directly

Implementers 2

SegmentDecoderpkg/model/v2/segment_decoder.go
SegmentDecoderpkg/model/v1/segment_decoder.go

Calls 4

ConsumeWithFinalMethod · 0.95
ResultMethod · 0.95
NewCombinerFunction · 0.92
UnmarshalMethod · 0.65

Tested by

no test coverage detected