Source File
frame.go
Belonging Package
github.com/quic-go/quic-go/http3/qlog
package qlogimport ()// Frame represents an HTTP/3 frame.type Frame struct {Frame any}func ( Frame) ( *jsontext.Encoder) error {switch frame := .Frame.(type) {case DataFrame:return .encode()case HeadersFrame:return .encode()case GoAwayFrame:return .encode()case SettingsFrame:return .encode()case PushPromiseFrame:return .encode()case CancelPushFrame:return .encode()case MaxPushIDFrame:return .encode()case ReservedFrame:return .encode()case UnknownFrame:return .encode()}// This shouldn't happen if the code is correctly logging frames.// Write a null token to produce valid JSON.return .WriteToken(jsontext.Null)}// A DataFrame is a DATA frametype DataFrame struct{}func ( *DataFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("data")).WriteToken(jsontext.EndObject)return .err}type HeaderField struct {Name stringValue string}// A HeadersFrame is a HEADERS frametype HeadersFrame struct {HeaderFields []HeaderField}func ( *HeadersFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("headers"))if len(.HeaderFields) > 0 {.WriteToken(jsontext.String("header_fields")).WriteToken(jsontext.BeginArray)for , := range .HeaderFields {.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("name")).WriteToken(jsontext.String(.Name)).WriteToken(jsontext.String("value")).WriteToken(jsontext.String(.Value)).WriteToken(jsontext.EndObject)}.WriteToken(jsontext.EndArray)}.WriteToken(jsontext.EndObject)return .err}// A GoAwayFrame is a GOAWAY frametype GoAwayFrame struct {StreamID quic.StreamID}func ( *GoAwayFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("goaway")).WriteToken(jsontext.String("id")).WriteToken(jsontext.Uint(uint64(.StreamID))).WriteToken(jsontext.EndObject)return .err}type SettingsFrame struct {MaxFieldSectionSize int64Datagram *boolExtendedConnect *boolOther map[uint64]uint64}func ( *SettingsFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("settings")).WriteToken(jsontext.String("settings")).WriteToken(jsontext.BeginArray)if .MaxFieldSectionSize >= 0 {.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("name")).WriteToken(jsontext.String("settings_max_field_section_size")).WriteToken(jsontext.String("value")).WriteToken(jsontext.Uint(uint64(.MaxFieldSectionSize))).WriteToken(jsontext.EndObject)}if .Datagram != nil {.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("name")).WriteToken(jsontext.String("settings_h3_datagram")).WriteToken(jsontext.String("value")).WriteToken(jsontext.Bool(*.Datagram)).WriteToken(jsontext.EndObject)}if .ExtendedConnect != nil {.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("name")).WriteToken(jsontext.String("settings_enable_connect_protocol")).WriteToken(jsontext.String("value")).WriteToken(jsontext.Bool(*.ExtendedConnect)).WriteToken(jsontext.EndObject)}if len(.Other) > 0 {for , := range .Other {.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("name")).WriteToken(jsontext.String("unknown")).WriteToken(jsontext.String("name_bytes")).WriteToken(jsontext.Uint()).WriteToken(jsontext.String("value")).WriteToken(jsontext.Uint()).WriteToken(jsontext.EndObject)}}.WriteToken(jsontext.EndArray).WriteToken(jsontext.EndObject)return .err}// A PushPromiseFrame is a PUSH_PROMISE frametype PushPromiseFrame struct{}func ( *PushPromiseFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("push_promise")).WriteToken(jsontext.EndObject)return .err}// A CancelPushFrame is a CANCEL_PUSH frametype CancelPushFrame struct{}func ( *CancelPushFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("cancel_push")).WriteToken(jsontext.EndObject)return .err}// A MaxPushIDFrame is a MAX_PUSH_ID frametype MaxPushIDFrame struct{}func ( *MaxPushIDFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("max_push_id")).WriteToken(jsontext.EndObject)return .err}// A ReservedFrame is one of the reserved frame typestype ReservedFrame struct {Type uint64}func ( *ReservedFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("reserved")).WriteToken(jsontext.String("frame_type_bytes")).WriteToken(jsontext.Uint(.Type)).WriteToken(jsontext.EndObject)return .err}// An UnknownFrame is an unknown frame typetype UnknownFrame struct {Type uint64}func ( *UnknownFrame) ( *jsontext.Encoder) error {:= encoderHelper{enc: }.WriteToken(jsontext.BeginObject).WriteToken(jsontext.String("frame_type")).WriteToken(jsontext.String("unknown")).WriteToken(jsontext.String("frame_type_bytes")).WriteToken(jsontext.Uint(.Type)).WriteToken(jsontext.EndObject)return .err}
![]() |
The pages are generated with Golds v0.8.4. (GOOS=linux GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @zigo_101 (reachable from the left QR code) to get the latest news of Golds. |