forked from quic-go/quic-go
pass packet number and packet number length to frames.Write
This commit is contained in:
@@ -25,7 +25,7 @@ type AckFrame struct {
|
||||
}
|
||||
|
||||
// Write writes an ACK frame.
|
||||
func (f *AckFrame) Write(b *bytes.Buffer) error {
|
||||
func (f *AckFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error {
|
||||
typeByte := uint8(0x40 | 0x0C)
|
||||
|
||||
if f.HasNACK() {
|
||||
|
||||
@@ -192,7 +192,7 @@ var _ = Describe("AckFrame", func() {
|
||||
Entropy: 2,
|
||||
LargestObserved: 1,
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(b.Bytes()).To(Equal([]byte{0x4c, 0x02, 0x01, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0}))
|
||||
})
|
||||
@@ -208,7 +208,7 @@ var _ = Describe("AckFrame", func() {
|
||||
LargestObserved: 4,
|
||||
NackRanges: []NackRange{nackRange},
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
missingPacketBytes := b.Bytes()[b.Len()-8:]
|
||||
Expect(missingPacketBytes[0]).To(Equal(uint8(1))) // numRanges
|
||||
@@ -233,7 +233,7 @@ var _ = Describe("AckFrame", func() {
|
||||
LargestObserved: 7,
|
||||
NackRanges: []NackRange{nackRange1, nackRange2},
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
missingPacketBytes := b.Bytes()[b.Len()-(1+2*7):]
|
||||
Expect(missingPacketBytes[0]).To(Equal(uint8(2))) // numRanges
|
||||
@@ -253,7 +253,7 @@ var _ = Describe("AckFrame", func() {
|
||||
Entropy: 2,
|
||||
LargestObserved: 1,
|
||||
}
|
||||
f.Write(b)
|
||||
f.Write(b, 1, 6)
|
||||
Expect(f.MaxLength()).To(Equal(b.Len()))
|
||||
})
|
||||
|
||||
@@ -269,7 +269,7 @@ var _ = Describe("AckFrame", func() {
|
||||
},
|
||||
},
|
||||
}
|
||||
err := f.Write(b)
|
||||
err := f.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(f.MaxLength()).To(Equal(b.Len()))
|
||||
})
|
||||
@@ -282,7 +282,7 @@ var _ = Describe("AckFrame", func() {
|
||||
Entropy: 0xDE,
|
||||
LargestObserved: 6789,
|
||||
}
|
||||
err := frameOrig.Write(b)
|
||||
err := frameOrig.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
frame, err := ParseAckFrame(bytes.NewReader(b.Bytes()))
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
@@ -301,7 +301,7 @@ var _ = Describe("AckFrame", func() {
|
||||
LargestObserved: 15,
|
||||
NackRanges: nackRanges,
|
||||
}
|
||||
err := frameOrig.Write(b)
|
||||
err := frameOrig.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
r := bytes.NewReader(b.Bytes())
|
||||
frame, err := ParseAckFrame(r)
|
||||
|
||||
@@ -52,7 +52,7 @@ func (f *ConnectionCloseFrame) MaxLength() int {
|
||||
}
|
||||
|
||||
// Write writes an CONNECTION_CLOSE frame.
|
||||
func (f *ConnectionCloseFrame) Write(b *bytes.Buffer) error {
|
||||
func (f *ConnectionCloseFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error {
|
||||
b.WriteByte(0x02)
|
||||
utils.WriteUint32(b, uint32(f.ErrorCode))
|
||||
|
||||
|
||||
@@ -35,7 +35,7 @@ var _ = Describe("ConnectionCloseFrame", func() {
|
||||
frame := &ConnectionCloseFrame{
|
||||
ErrorCode: 0xDEADBEEF,
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(b.Len()).To(Equal(1 + 2 + 4))
|
||||
Expect(b.Bytes()).To(Equal([]byte{0x02, 0xEF, 0xBE, 0xAD, 0xDE, 0x00, 0x00}))
|
||||
@@ -47,7 +47,7 @@ var _ = Describe("ConnectionCloseFrame", func() {
|
||||
ErrorCode: 0xDEADBEEF,
|
||||
ReasonPhrase: "foobar",
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
Expect(b.Len()).To(Equal(1 + 2 + 4 + len(frame.ReasonPhrase)))
|
||||
Expect(b.Bytes()[:5]).To(Equal([]byte{0x02, 0xEF, 0xBE, 0xAD, 0xDE}))
|
||||
@@ -67,7 +67,7 @@ var _ = Describe("ConnectionCloseFrame", func() {
|
||||
ErrorCode: 0xDEADBEEF,
|
||||
ReasonPhrase: reasonPhrase,
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).To(HaveOccurred())
|
||||
})
|
||||
|
||||
@@ -77,7 +77,7 @@ var _ = Describe("ConnectionCloseFrame", func() {
|
||||
ErrorCode: 0xDEADBEEF,
|
||||
ReasonPhrase: "foobar",
|
||||
}
|
||||
f.Write(b)
|
||||
f.Write(b, 1, 6)
|
||||
Expect(f.MaxLength()).To(Equal(b.Len()))
|
||||
})
|
||||
})
|
||||
@@ -88,7 +88,7 @@ var _ = Describe("ConnectionCloseFrame", func() {
|
||||
ErrorCode: 0xDEADBEEF,
|
||||
ReasonPhrase: "Lorem ipsum dolor sit amet.",
|
||||
}
|
||||
err := frame.Write(b)
|
||||
err := frame.Write(b, 1, 6)
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
readframe, err := ParseConnectionCloseFrame(bytes.NewReader(b.Bytes()))
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
package frames
|
||||
|
||||
import "bytes"
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/lucas-clemente/quic-go/protocol"
|
||||
)
|
||||
|
||||
// A Frame in QUIC
|
||||
type Frame interface {
|
||||
Write(b *bytes.Buffer) error
|
||||
Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error
|
||||
MaxLength() int
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ type RstStreamFrame struct {
|
||||
}
|
||||
|
||||
//Write writes a RST_STREAM frame
|
||||
func (f *RstStreamFrame) Write(b *bytes.Buffer) error {
|
||||
func (f *RstStreamFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error {
|
||||
panic("RstStreamFrame: Write not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package frames
|
||||
import (
|
||||
"bytes"
|
||||
|
||||
"github.com/lucas-clemente/quic-go/protocol"
|
||||
"github.com/lucas-clemente/quic-go/utils"
|
||||
)
|
||||
|
||||
@@ -12,7 +13,7 @@ type StopWaitingFrame struct {
|
||||
LeastUnackedDelta uint64
|
||||
}
|
||||
|
||||
func (f *StopWaitingFrame) Write(b *bytes.Buffer) error {
|
||||
func (f *StopWaitingFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error {
|
||||
panic("StopWaitingFrame: Write not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ func ParseStreamFrame(r *bytes.Reader) (*StreamFrame, error) {
|
||||
}
|
||||
|
||||
// WriteStreamFrame writes a stream frame.
|
||||
func (f *StreamFrame) Write(b *bytes.Buffer) error {
|
||||
func (f *StreamFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error {
|
||||
typeByte := uint8(0x80)
|
||||
if f.FinBit {
|
||||
typeByte ^= 0x40
|
||||
|
||||
@@ -37,7 +37,7 @@ var _ = Describe("StreamFrame", func() {
|
||||
(&StreamFrame{
|
||||
StreamID: 1,
|
||||
Data: []byte("foobar"),
|
||||
}).Write(b)
|
||||
}).Write(b, 1, 6)
|
||||
Expect(b.Bytes()).To(Equal([]byte{0xa3, 0x1, 0, 0, 0, 0x06, 0x00, 'f', 'o', 'o', 'b', 'a', 'r'}))
|
||||
})
|
||||
|
||||
@@ -47,7 +47,7 @@ var _ = Describe("StreamFrame", func() {
|
||||
StreamID: 1,
|
||||
Offset: 16,
|
||||
Data: []byte("foobar"),
|
||||
}).Write(b)
|
||||
}).Write(b, 1, 6)
|
||||
Expect(b.Bytes()).To(Equal([]byte{0xbf, 0x1, 0, 0, 0, 0x10, 0, 0, 0, 0, 0, 0, 0, 0x06, 0x00, 'f', 'o', 'o', 'b', 'a', 'r'}))
|
||||
})
|
||||
|
||||
@@ -58,7 +58,7 @@ var _ = Describe("StreamFrame", func() {
|
||||
Data: []byte("f"),
|
||||
Offset: 1,
|
||||
}
|
||||
f.Write(b)
|
||||
f.Write(b, 1, 6)
|
||||
Expect(f.MaxLength()).To(Equal(b.Len()))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -14,7 +14,7 @@ type WindowUpdateFrame struct {
|
||||
}
|
||||
|
||||
//Write writes a RST_STREAM frame
|
||||
func (f *WindowUpdateFrame) Write(b *bytes.Buffer) error {
|
||||
func (f *WindowUpdateFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, packetNumberLen uint8) error {
|
||||
panic("WindowUpdateFrame: Write not yet implemented")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user