remove PacketNumber from Frame interface Write method

This commit is contained in:
Marten Seemann
2016-05-12 16:17:55 +07:00
parent e782f28b2b
commit 2f6e2c1201
18 changed files with 96 additions and 69 deletions

View File

@@ -13,25 +13,32 @@ type StopWaitingFrame struct {
LeastUnacked protocol.PacketNumber
Entropy byte
PacketNumberLen protocol.PacketNumberLen
PacketNumber protocol.PacketNumber
}
var (
errLeastUnackedHigherThanPacketNumber = errors.New("StopWaitingFrame: LeastUnacked can't be greater than the packet number")
errPacketNumberNotSet = errors.New("StopWaitingFrame: PacketNumber not set")
errPacketNumberLenNotSet = errors.New("StopWaitingFrame: PacketNumberLen not set")
)
func (f *StopWaitingFrame) Write(b *bytes.Buffer, packetNumber protocol.PacketNumber, version protocol.VersionNumber) error {
func (f *StopWaitingFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error {
// packetNumber is the packet number of the packet that this StopWaitingFrame will be sent with
typeByte := uint8(0x06)
b.WriteByte(typeByte)
b.WriteByte(f.Entropy)
if f.LeastUnacked > packetNumber {
// make sure the PacketNumber was set
if f.PacketNumber == protocol.PacketNumber(0) {
return errPacketNumberNotSet
}
if f.LeastUnacked > f.PacketNumber {
return errLeastUnackedHigherThanPacketNumber
}
leastUnackedDelta := uint64(packetNumber - f.LeastUnacked)
leastUnackedDelta := uint64(f.PacketNumber - f.LeastUnacked)
switch f.PacketNumberLen {
case protocol.PacketNumberLen1: