MCPcopy Index your code
hub / github.com/subtrace/subtrace / newHTTP2Stream

Method newHTTP2Stream

cmd/run/socket/proxy.go:1007–1047  ·  view source on GitHub ↗
(streamID uint32)

Source from the content-addressed store, hash-verified

1005}
1006
1007func (p *proxy) newHTTP2Stream(streamID uint32) *http2Stream {
1008 eventID := uuid.New()
1009 slog.Debug("proxy: http/2: new event", "proxy", p, "eventID", eventID)
1010
1011 event := p.global.Config.GetEventTemplate()
1012 event.Set("event_id", eventID.String())
1013
1014 st := new(http2Stream)
1015 st.streamID = streamID
1016
1017 st.event = event
1018 st.parser = tracer.NewParser(p.global, event)
1019
1020 st.active.Add(2)
1021
1022 st.req.Request = new(http.Request)
1023 st.req.Request.Proto = "HTTP/2"
1024 st.req.Request.ProtoMajor = 2
1025 st.req.Request.ProtoMinor = 0
1026 st.req.Request.URL = new(url.URL)
1027 st.req.Request.Header = make(http.Header)
1028 st.req.Request.Trailer = make(http.Header)
1029 st.req.Request.Body, st.req.buf = io.Pipe()
1030
1031 st.resp.Response = new(http.Response)
1032 st.resp.Response.Proto = "HTTP/2"
1033 st.resp.Response.ProtoMajor = 2
1034 st.resp.Response.ProtoMinor = 0
1035 st.resp.Response.Header = make(http.Header)
1036 st.resp.Response.Trailer = make(http.Header)
1037 st.resp.Response.Body, st.resp.buf = io.Pipe()
1038
1039 go func() {
1040 st.active.Wait()
1041 if err := st.parser.Finish(); err != nil {
1042 slog.Error("failed to finish HAR parser", "eventID", st.event.Get("event_id"), "err", err)
1043 }
1044 }()
1045
1046 return st
1047}
1048
1049func (p *proxy) proxyHTTP2(cli, srv *bufConn) error {
1050 slog.Debug("starting proxyHTTP2", "proxy", p)

Callers 1

proxyHTTP2Method · 0.95

Calls 8

NewParserFunction · 0.92
GetEventTemplateMethod · 0.80
AddMethod · 0.80
FinishMethod · 0.80
SetMethod · 0.45
StringMethod · 0.45
WaitMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected