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

Function decompressFromReader

pkg/util/http.go:185–209  ·  view source on GitHub ↗
(reader io.Reader, expectedSize, maxSize int, compression CompressionType, sp trace.Span)

Source from the content-addressed store, hash-verified

183}
184
185func decompressFromReader(reader io.Reader, expectedSize, maxSize int, compression CompressionType, sp trace.Span) ([]byte, error) {
186 var (
187 buf bytes.Buffer
188 body []byte
189 err error
190 )
191 if expectedSize > 0 {
192 buf.Grow(expectedSize + bytes.MinRead) // extra space guarantees no reallocation
193 }
194 // Read from LimitReader with limit max+1. So if the underlying
195 // reader is over limit, the result will be bigger than max.
196 reader = io.LimitReader(reader, int64(maxSize)+1)
197 switch compression {
198 case NoCompression:
199 _, err = buf.ReadFrom(reader)
200 body = buf.Bytes()
201 case RawSnappy:
202 _, err = buf.ReadFrom(reader)
203 if err != nil {
204 return nil, err
205 }
206 body, err = decompressFromBuffer(&buf, maxSize, RawSnappy, sp)
207 }
208 return body, err
209}
210
211func decompressFromBuffer(buffer *bytes.Buffer, maxSize int, compression CompressionType, sp trace.Span) ([]byte, error) {
212 if len(buffer.Bytes()) > maxSize {

Callers 1

decompressRequestFunction · 0.85

Calls 2

decompressFromBufferFunction · 0.85
BytesMethod · 0.80

Tested by

no test coverage detected