@@ -30,10 +30,8 @@ type FrameType uint8
3030const (
3131 FrameTypeData FrameType = 0x0
3232 FrameTypeHeaders FrameType = 0x1
33- FrameTypePriority FrameType = 0x2
3433 FrameTypeRSTStream FrameType = 0x3
3534 FrameTypeSettings FrameType = 0x4
36- FrameTypePushPromise FrameType = 0x5
3735 FrameTypePing FrameType = 0x6
3836 FrameTypeGoAway FrameType = 0x7
3937 FrameTypeWindowUpdate FrameType = 0x8
@@ -101,6 +99,9 @@ type FrameHeader struct {
10199// Frame represents an HTTP/2 Frame.
102100type Frame interface {
103101 Header () * FrameHeader
102+ // Free frees the underlying buffer if present so it can be reused by the
103+ // framer.
104+ Free ()
104105}
105106
106107type DataFrame struct {
@@ -144,16 +145,19 @@ func (f *RSTStreamFrame) Header() *FrameHeader {
144145 return f .hdr
145146}
146147
148+ func (f * RSTStreamFrame ) Free () {}
149+
147150type SettingsFrame struct {
148151 hdr * FrameHeader
149- free func ()
150152 settings []Setting
151153}
152154
153155func (f * SettingsFrame ) Header () * FrameHeader {
154156 return f .hdr
155157}
156158
159+ func (f * SettingsFrame ) Free () {}
160+
157161type PingFrame struct {
158162 hdr * FrameHeader
159163 free func ()
@@ -225,7 +229,9 @@ func (f *MetaHeadersFrame) Header() *FrameHeader {
225229 return f .hdr
226230}
227231
228- // Framer represents a Framer used in gRPC-Go.
232+ func (f * MetaHeadersFrame ) Free () {}
233+
234+ // Framer encapsulates the functionality to read and write HTTP/2 frames.
229235type Framer interface {
230236 // SetMetaDecoder will set a decoder for the framer. When the decoder is
231237 // set, ReadFrame will parse the header values, merging all Headers and
0 commit comments