make it possible to log DATAGRAM frames

This commit is contained in:
Marten Seemann
2020-12-09 15:30:38 +07:00
parent eefd2b73f7
commit 0582228e00
5 changed files with 33 additions and 0 deletions

View File

@@ -23,6 +23,10 @@ func ConvertFrame(frame wire.Frame) logging.Frame {
Length: f.DataLen(), Length: f.DataLen(),
Fin: f.Fin, Fin: f.Fin,
} }
case *wire.DatagramFrame:
return &logging.DatagramFrame{
Length: logging.ByteCount(len(f.Data)),
}
default: default:
return logging.Frame(frame) return logging.Frame(frame)
} }

View File

@@ -34,6 +34,13 @@ var _ = Describe("CRYPTO frame", func() {
Expect(sf.Fin).To(BeTrue()) Expect(sf.Fin).To(BeTrue())
}) })
It("converts DATAGRAM frames", func() {
f := ConvertFrame(&wire.DatagramFrame{Data: []byte("foobar")})
Expect(f).To(BeAssignableToTypeOf(&logging.DatagramFrame{}))
df := f.(*logging.DatagramFrame)
Expect(df.Length).To(Equal(logging.ByteCount(6)))
})
It("converts other frames", func() { It("converts other frames", func() {
f := ConvertFrame(&wire.MaxDataFrame{MaximumData: 1234}) f := ConvertFrame(&wire.MaxDataFrame{MaximumData: 1234})
Expect(f).To(BeAssignableToTypeOf(&logging.MaxDataFrame{})) Expect(f).To(BeAssignableToTypeOf(&logging.MaxDataFrame{}))

View File

@@ -59,3 +59,8 @@ type StreamFrame struct {
Length ByteCount Length ByteCount
Fin bool Fin bool
} }
// A DatagramFrame is a DATAGRAM frame.
type DatagramFrame struct {
Length ByteCount
}

View File

@@ -57,6 +57,8 @@ func (f frame) MarshalJSONObject(enc *gojay.Encoder) {
marshalConnectionCloseFrame(enc, frame) marshalConnectionCloseFrame(enc, frame)
case *logging.HandshakeDoneFrame: case *logging.HandshakeDoneFrame:
marshalHandshakeDoneFrame(enc, frame) marshalHandshakeDoneFrame(enc, frame)
case *logging.DatagramFrame:
marshalDatagramFrame(enc, frame)
default: default:
panic("unknown frame type") panic("unknown frame type")
} }
@@ -218,3 +220,8 @@ func marshalConnectionCloseFrame(enc *gojay.Encoder, f *logging.ConnectionCloseF
func marshalHandshakeDoneFrame(enc *gojay.Encoder, _ *logging.HandshakeDoneFrame) { func marshalHandshakeDoneFrame(enc *gojay.Encoder, _ *logging.HandshakeDoneFrame) {
enc.StringKey("frame_type", "handshake_done") enc.StringKey("frame_type", "handshake_done")
} }
func marshalDatagramFrame(enc *gojay.Encoder, f *logging.DatagramFrame) {
enc.StringKey("frame_type", "datagram")
enc.Int64Key("length", int64(f.Length))
}

View File

@@ -364,4 +364,14 @@ var _ = Describe("Frames", func() {
}, },
) )
}) })
It("marshals DATAGRAM frames", func() {
check(
&logging.DatagramFrame{Length: 1337},
map[string]interface{}{
"frame_type": "datagram",
"length": 1337,
},
)
})
}) })