forked from quic-go/quic-go
46 lines
910 B
Go
46 lines
910 B
Go
package frames
|
|
|
|
import (
|
|
"bytes"
|
|
|
|
"github.com/lucas-clemente/quic-go/utils"
|
|
)
|
|
|
|
// A StopWaitingFrame in QUIC
|
|
type StopWaitingFrame struct {
|
|
Entropy byte
|
|
LeastUnackedDelta uint64
|
|
}
|
|
|
|
func (f *StopWaitingFrame) Write(b *bytes.Buffer) error {
|
|
panic("StopWaitingFrame: Write not yet implemented")
|
|
}
|
|
|
|
// MaxLength of a written frame
|
|
func (f *StopWaitingFrame) MaxLength() int {
|
|
panic("StopWaitingFrame: Write not yet implemented")
|
|
}
|
|
|
|
// ParseStopWaitingFrame parses a StopWaiting frame
|
|
func ParseStopWaitingFrame(r *bytes.Reader, packetNumberLen uint8) (*StopWaitingFrame, error) {
|
|
frame := &StopWaitingFrame{}
|
|
|
|
// read the TypeByte
|
|
_, err := r.ReadByte()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
frame.Entropy, err = r.ReadByte()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
frame.LeastUnackedDelta, err = utils.ReadUintN(r, packetNumberLen)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return frame, nil
|
|
}
|