MCPcopy
hub / github.com/grpc/grpc-go / writeHeader

Method writeHeader

internal/transport/controlbuf.go:736–780  ·  view source on GitHub ↗
(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func())

Source from the content-addressed store, hash-verified

734}
735
736func (l *loopyWriter) writeHeader(streamID uint32, endStream bool, hf []hpack.HeaderField, onWrite func()) error {
737 if onWrite != nil {
738 onWrite()
739 }
740 l.hBuf.Reset()
741 for _, f := range hf {
742 if err := l.hEnc.WriteField(f); err != nil {
743 if l.logger.V(logLevel) {
744 l.logger.Warningf("Encountered error while encoding headers: %v", err)
745 }
746 }
747 }
748 var (
749 err error
750 endHeaders, first bool
751 )
752 first = true
753 for !endHeaders {
754 size := l.hBuf.Len()
755 if size > http2MaxFrameLen {
756 size = http2MaxFrameLen
757 } else {
758 endHeaders = true
759 }
760 if first {
761 first = false
762 err = l.framer.fr.WriteHeaders(http2.HeadersFrameParam{
763 StreamID: streamID,
764 BlockFragment: l.hBuf.Next(size),
765 EndStream: endStream,
766 EndHeaders: endHeaders,
767 })
768 } else {
769 err = l.framer.fr.WriteContinuation(
770 streamID,
771 endHeaders,
772 l.hBuf.Next(size),
773 )
774 }
775 if err != nil {
776 return err
777 }
778 }
779 return nil
780}
781
782func (l *loopyWriter) preprocessData(df *dataFrame) {
783 str, ok := l.estdStreams[df.streamID]

Callers 4

headerHandlerMethod · 0.95
originateStreamMethod · 0.95

Calls 5

VMethod · 0.65
WarningfMethod · 0.65
LenMethod · 0.65
NextMethod · 0.65
ResetMethod · 0.45

Tested by

no test coverage detected