forked from quic-go/quic-go
make it possible to log DATAGRAM frames
This commit is contained in:
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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{}))
|
||||||
|
|||||||
@@ -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
|
||||||
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user