forked from quic-go/quic-go
ParseOtherFrames-16 148ns ± 4% 150ns ± 3% ~ (p=0.223 n=8+8) ParseAckFrame-16 302ns ± 2% 298ns ± 3% ~ (p=0.246 n=8+8) ParseStreamFrame-16 262ns ± 3% 213ns ± 2% -18.61% (p=0.000 n=8+8) ParseDatagramFrame-16 561ns ± 5% 547ns ± 4% ~ (p=0.105 n=8+8)
34 lines
874 B
Go
34 lines
874 B
Go
package wire
|
|
|
|
import (
|
|
"github.com/quic-go/quic-go/internal/protocol"
|
|
)
|
|
|
|
// A Frame in QUIC
|
|
type Frame interface {
|
|
Append(b []byte, version protocol.Version) ([]byte, error)
|
|
Length(version protocol.Version) protocol.ByteCount
|
|
}
|
|
|
|
// IsProbingFrame returns true if the frame is a probing frame.
|
|
// See section 9.1 of RFC 9000.
|
|
func IsProbingFrame(f Frame) bool {
|
|
switch f.(type) {
|
|
case *PathChallengeFrame, *PathResponseFrame, *NewConnectionIDFrame:
|
|
return true
|
|
}
|
|
return false
|
|
}
|
|
|
|
// IsProbingFrameType returns true if the FrameType is a probing frame.
|
|
// See section 9.1 of RFC 9000.
|
|
func IsProbingFrameType(f FrameType) bool {
|
|
//nolint:exhaustive // PATH_CHALLENGE, PATH_RESPONSE and NEW_CONNECTION_ID are the only probing frames
|
|
switch f {
|
|
case FrameTypePathChallenge, FrameTypePathResponse, FrameTypeNewConnectionID:
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|