MCPcopy Create free account
hub / github.com/dgrr/http2 / readFrom

Method readFrom

frameHeader.go:180–222  ·  view source on GitHub ↗

TODO: Delete rb?

(br *bufio.Reader)

Source from the content-addressed store, hash-verified

178
179// TODO: Delete rb?
180func (f *FrameHeader) readFrom(br *bufio.Reader) (int64, error) {
181 header, err := br.Peek(DefaultFrameSize)
182 if err != nil {
183 return -1, err
184 }
185
186 _, _ = br.Discard(DefaultFrameSize)
187
188 rn := int64(DefaultFrameSize)
189
190 // Parsing FrameHeader's Header field.
191 f.parseValues(header)
192 if err = f.checkLen(); err != nil {
193 return 0, err
194 }
195
196 if f.kind > FrameContinuation {
197 _, _ = br.Discard(f.length)
198 return 0, ErrUnknownFrameType
199 }
200 f.fr = AcquireFrame(f.kind)
201
202 // if max > 0 && frh.length > max {
203 // TODO: Discard bytes and return an error
204 if f.length > 0 {
205 n := f.length
206 if n < 0 {
207 panic(fmt.Sprintf("length is less than 0 (%d). Overflow? (%d)", n, f.length))
208 }
209
210 f.payload = http2utils.Resize(f.payload, n)
211
212 n, err = io.ReadFull(br, f.payload[:n])
213 if err != nil {
214 ReleaseFrame(f.fr)
215 return 0, err
216 }
217
218 rn += int64(n)
219 }
220
221 return rn, f.fr.Deserialize(f)
222}
223
224// WriteTo writes frame to the Writer.
225//

Callers 1

ReadFromMethod · 0.95

Calls 6

parseValuesMethod · 0.95
checkLenMethod · 0.95
ResizeFunction · 0.92
AcquireFrameFunction · 0.85
ReleaseFrameFunction · 0.85
DeserializeMethod · 0.65

Tested by

no test coverage detected