| 612 | } |
| 613 | |
| 614 | func writeData(bw *bufio.Writer, fh *FrameHeader, body []byte) (err error) { |
| 615 | step := 1 << 14 |
| 616 | |
| 617 | data := AcquireFrame(FrameData).(*Data) |
| 618 | fh.SetBody(data) |
| 619 | |
| 620 | for i := 0; err == nil && i < len(body); i += step { |
| 621 | if i+step >= len(body) { |
| 622 | step = len(body) - i |
| 623 | } |
| 624 | |
| 625 | data.SetEndStream(i+step == len(body)) |
| 626 | data.SetPadding(false) |
| 627 | data.SetData(body[i : step+i]) |
| 628 | |
| 629 | _, err = fh.WriteTo(bw) |
| 630 | } |
| 631 | |
| 632 | return err |
| 633 | } |
| 634 | |
| 635 | func (c *Conn) readNext() (fr *FrameHeader, err error) { |
| 636 | loop: |