From ab14684299072353e8b2d276381817c8db99ba9b Mon Sep 17 00:00:00 2001 From: Lucas Clemente Date: Sun, 10 Apr 2016 20:23:36 +0200 Subject: [PATCH] implement basic public header writing --- public_header.go | 8 ++++++++ public_header_test.go | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/public_header.go b/public_header.go index 0c6c46157..9d5a77c30 100644 --- a/public_header.go +++ b/public_header.go @@ -72,3 +72,11 @@ func ParsePublicHeader(b io.ByteReader) (*PublicHeader, error) { return header, nil } + +// WritePublicHeader writes a public header +func WritePublicHeader(b *bytes.Buffer, h *PublicHeader) { + publicFlagByte := uint8(0x0C | 0x20) + b.WriteByte(publicFlagByte) + utils.WriteUint64(b, h.ConnectionID) // TODO: Send shorter connection id if possible + utils.WriteUint32(b, uint32(h.PacketNumber)) // TODO: Send shorter packet number if possible +} diff --git a/public_header_test.go b/public_header_test.go index 196291516..1e8b4a6c0 100644 --- a/public_header_test.go +++ b/public_header_test.go @@ -72,4 +72,15 @@ var _ = Describe("Public Header", func() { Expect(b.Len()).To(BeZero()) }) }) + + Context("when writing", func() { + It("writes a sample header", func() { + b := &bytes.Buffer{} + WritePublicHeader(b, &PublicHeader{ + ConnectionID: 1, + PacketNumber: 2, + }) + Expect(b.Bytes()).To(Equal([]byte{0x2c, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0})) + }) + }) })