Documentation
¶
Index ¶
- func ComposeGQUICVersionNegotiation(connID protocol.ConnectionID, versions []protocol.VersionNumber) []byte
- func ComposeVersionNegotiation(destConnID, srcConnID protocol.ConnectionID, versions []protocol.VersionNumber) ([]byte, error)
- func LogFrame(logger utils.Logger, frame Frame, sent bool)
- func WritePublicReset(connectionID protocol.ConnectionID, rejectedPacketNumber protocol.PacketNumber, ...) []byte
- type AckFrame
- func (f *AckFrame) AcksPacket(p protocol.PacketNumber) bool
- func (f *AckFrame) HasMissingRanges() bool
- func (f *AckFrame) LargestAcked() protocol.PacketNumber
- func (f *AckFrame) Length(version protocol.VersionNumber) protocol.ByteCount
- func (f *AckFrame) LowestAcked() protocol.PacketNumber
- func (f *AckFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
- type AckRange
- type BlockedFrame
- type ConnectionCloseFrame
- type Frame
- type GoawayFrame
- type Header
- type InvariantHeader
- type MaxDataFrame
- type MaxStreamDataFrame
- type MaxStreamIDFrame
- type PathChallengeFrame
- type PathResponseFrame
- type PingFrame
- type PublicReset
- type RstStreamFrame
- type StopSendingFrame
- type StopWaitingFrame
- type StreamBlockedFrame
- type StreamFrame
- func (f *StreamFrame) DataLen() protocol.ByteCount
- func (f *StreamFrame) Length(version protocol.VersionNumber) protocol.ByteCount
- func (f *StreamFrame) MaxDataLen(maxSize protocol.ByteCount, version protocol.VersionNumber) protocol.ByteCount
- func (f *StreamFrame) MaybeSplitOffFrame(maxSize protocol.ByteCount, version protocol.VersionNumber) (*StreamFrame, error)
- func (f *StreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
- type StreamIDBlockedFrame
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ComposeGQUICVersionNegotiation ¶
func ComposeGQUICVersionNegotiation(connID protocol.ConnectionID, versions []protocol.VersionNumber) []byte
ComposeGQUICVersionNegotiation composes a Version Negotiation Packet for gQUIC
func ComposeVersionNegotiation ¶
func ComposeVersionNegotiation(destConnID, srcConnID protocol.ConnectionID, versions []protocol.VersionNumber) ([]byte, error)
ComposeVersionNegotiation composes a Version Negotiation according to the IETF draft
func WritePublicReset ¶
func WritePublicReset(connectionID protocol.ConnectionID, rejectedPacketNumber protocol.PacketNumber, nonceProof uint64) []byte
WritePublicReset writes a PUBLIC_RESET
Types ¶
type AckFrame ¶
type AckFrame struct {
AckRanges []AckRange // has to be ordered. The highest ACK range goes first, the lowest ACK range goes last
DelayTime time.Duration
}
An AckFrame is an ACK frame
func (*AckFrame) AcksPacket ¶
func (f *AckFrame) AcksPacket(p protocol.PacketNumber) bool
AcksPacket determines if this ACK frame acks a certain packet number
func (*AckFrame) HasMissingRanges ¶
HasMissingRanges returns if this frame reports any missing packets
func (*AckFrame) LargestAcked ¶
func (f *AckFrame) LargestAcked() protocol.PacketNumber
LargestAcked is the largest acked packet number
func (*AckFrame) Length ¶ added in v0.8.0
func (f *AckFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*AckFrame) LowestAcked ¶
func (f *AckFrame) LowestAcked() protocol.PacketNumber
LowestAcked is the lowest acked packet number
type AckRange ¶
type AckRange struct {
Smallest protocol.PacketNumber
Largest protocol.PacketNumber
}
AckRange is an ACK range
func (AckRange) Len ¶ added in v0.8.0
func (r AckRange) Len() protocol.PacketNumber
Len returns the number of packets contained in this ACK range
type BlockedFrame ¶
A BlockedFrame is a BLOCKED frame
func (*BlockedFrame) Length ¶ added in v0.8.0
func (f *BlockedFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*BlockedFrame) Write ¶
func (f *BlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
type ConnectionCloseFrame ¶
A ConnectionCloseFrame in QUIC
func (*ConnectionCloseFrame) Length ¶ added in v0.8.0
func (f *ConnectionCloseFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*ConnectionCloseFrame) Write ¶
func (f *ConnectionCloseFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
Write writes an CONNECTION_CLOSE frame.
type Frame ¶
type Frame interface {
Write(b *bytes.Buffer, version protocol.VersionNumber) error
Length(version protocol.VersionNumber) protocol.ByteCount
}
A Frame in QUIC
func ParseNextFrame ¶ added in v0.8.0
ParseNextFrame parses the next frame It skips PADDING frames.
type GoawayFrame ¶
type GoawayFrame struct {
ErrorCode qerr.ErrorCode
LastGoodStream protocol.StreamID
ReasonPhrase string
}
A GoawayFrame is a GOAWAY frame
func (*GoawayFrame) Length ¶ added in v0.8.0
func (f *GoawayFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*GoawayFrame) Write ¶
func (f *GoawayFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type Header ¶
type Header struct {
IsPublicHeader bool
Raw []byte
Version protocol.VersionNumber
DestConnectionID protocol.ConnectionID
SrcConnectionID protocol.ConnectionID
OrigDestConnectionID protocol.ConnectionID // only needed in the Retry packet
PacketNumberLen protocol.PacketNumberLen
PacketNumber protocol.PacketNumber
IsVersionNegotiation bool
SupportedVersions []protocol.VersionNumber // Version Number sent in a Version Negotiation Packet by the server
// only needed for the gQUIC Public Header
VersionFlag bool
ResetFlag bool
DiversificationNonce []byte
// only needed for the IETF Header
Type protocol.PacketType
IsLongHeader bool
KeyPhase int
PayloadLen protocol.ByteCount
Token []byte
}
Header is the header of a QUIC packet. It contains fields that are only needed for the gQUIC Public Header and the IETF draft Header.
func (*Header) Write ¶
func (h *Header) Write(b *bytes.Buffer, pers protocol.Perspective, version protocol.VersionNumber) error
Write writes the Header.
type InvariantHeader ¶ added in v0.9.0
type InvariantHeader struct {
IsLongHeader bool
Version protocol.VersionNumber
SrcConnectionID protocol.ConnectionID
DestConnectionID protocol.ConnectionID
// contains filtered or unexported fields
}
The InvariantHeader is the version independent part of the header
func ParseInvariantHeader ¶ added in v0.9.0
func ParseInvariantHeader(b *bytes.Reader, shortHeaderConnIDLen int) (*InvariantHeader, error)
ParseInvariantHeader parses the version independent part of the header
func (*InvariantHeader) Parse ¶ added in v0.9.0
func (iv *InvariantHeader) Parse(b *bytes.Reader, sentBy protocol.Perspective, ver protocol.VersionNumber) (*Header, error)
Parse parses the version dependent part of the header
type MaxDataFrame ¶
A MaxDataFrame carries flow control information for the connection
func (*MaxDataFrame) Length ¶ added in v0.8.0
func (f *MaxDataFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*MaxDataFrame) Write ¶
func (f *MaxDataFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
Write writes a MAX_STREAM_DATA frame
type MaxStreamDataFrame ¶
A MaxStreamDataFrame carries flow control information for a stream
func (*MaxStreamDataFrame) Length ¶ added in v0.8.0
func (f *MaxStreamDataFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*MaxStreamDataFrame) Write ¶
func (f *MaxStreamDataFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
Write writes a MAX_STREAM_DATA frame
type MaxStreamIDFrame ¶ added in v0.7.0
A MaxStreamIDFrame is a MAX_STREAM_ID frame
func (*MaxStreamIDFrame) Length ¶ added in v0.8.0
func (f *MaxStreamIDFrame) Length(protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*MaxStreamIDFrame) Write ¶ added in v0.7.0
func (f *MaxStreamIDFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type PathChallengeFrame ¶ added in v0.8.0
type PathChallengeFrame struct {
Data [8]byte
}
A PathChallengeFrame is a PATH_CHALLENGE frame
func (*PathChallengeFrame) Length ¶ added in v0.8.0
func (f *PathChallengeFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*PathChallengeFrame) Write ¶ added in v0.8.0
func (f *PathChallengeFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type PathResponseFrame ¶ added in v0.8.0
type PathResponseFrame struct {
Data [8]byte
}
A PathResponseFrame is a PATH_RESPONSE frame
func (*PathResponseFrame) Length ¶ added in v0.8.0
func (f *PathResponseFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*PathResponseFrame) Write ¶ added in v0.8.0
func (f *PathResponseFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type PingFrame ¶
type PingFrame struct{}
A PingFrame is a ping frame
type PublicReset ¶
type PublicReset struct {
RejectedPacketNumber protocol.PacketNumber
Nonce uint64
}
A PublicReset is a PUBLIC_RESET
func ParsePublicReset ¶
func ParsePublicReset(r *bytes.Reader) (*PublicReset, error)
ParsePublicReset parses a PUBLIC_RESET
type RstStreamFrame ¶
type RstStreamFrame struct {
StreamID protocol.StreamID
// The error code is a uint32 in gQUIC, but a uint16 in IETF QUIC.
// protocol.ApplicaitonErrorCode is a uint16, so larger values in gQUIC frames will be truncated.
ErrorCode protocol.ApplicationErrorCode
ByteOffset protocol.ByteCount
}
A RstStreamFrame is a RST_STREAM frame in QUIC
func (*RstStreamFrame) Length ¶ added in v0.8.0
func (f *RstStreamFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*RstStreamFrame) Write ¶
func (f *RstStreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
Write writes a RST_STREAM frame
type StopSendingFrame ¶ added in v0.7.0
type StopSendingFrame struct {
StreamID protocol.StreamID
ErrorCode protocol.ApplicationErrorCode
}
A StopSendingFrame is a STOP_SENDING frame
func (*StopSendingFrame) Length ¶ added in v0.8.0
func (f *StopSendingFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StopSendingFrame) Write ¶ added in v0.7.0
func (f *StopSendingFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type StopWaitingFrame ¶
type StopWaitingFrame struct {
LeastUnacked protocol.PacketNumber
PacketNumberLen protocol.PacketNumberLen
// PacketNumber is the packet number of the packet that this StopWaitingFrame will be sent with
PacketNumber protocol.PacketNumber
}
A StopWaitingFrame in QUIC
func (*StopWaitingFrame) Length ¶ added in v0.8.0
func (f *StopWaitingFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StopWaitingFrame) Write ¶
func (f *StopWaitingFrame) Write(b *bytes.Buffer, v protocol.VersionNumber) error
type StreamBlockedFrame ¶
A StreamBlockedFrame in QUIC
func (*StreamBlockedFrame) Length ¶ added in v0.8.0
func (f *StreamBlockedFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StreamBlockedFrame) Write ¶
func (f *StreamBlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
Write writes a STREAM_BLOCKED frame
type StreamFrame ¶
type StreamFrame struct {
StreamID protocol.StreamID
FinBit bool
DataLenPresent bool
Offset protocol.ByteCount
Data []byte
}
A StreamFrame of QUIC
func (*StreamFrame) DataLen ¶
func (f *StreamFrame) DataLen() protocol.ByteCount
DataLen gives the length of data in bytes
func (*StreamFrame) Length ¶ added in v0.8.0
func (f *StreamFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length returns the total length of the STREAM frame
func (*StreamFrame) MaxDataLen ¶ added in v0.8.0
func (f *StreamFrame) MaxDataLen(maxSize protocol.ByteCount, version protocol.VersionNumber) protocol.ByteCount
MaxDataLen returns the maximum data length If 0 is returned, writing will fail (a STREAM frame must contain at least 1 byte of data).
func (*StreamFrame) MaybeSplitOffFrame ¶ added in v0.8.0
func (f *StreamFrame) MaybeSplitOffFrame(maxSize protocol.ByteCount, version protocol.VersionNumber) (*StreamFrame, error)
MaybeSplitOffFrame splits a frame such that it is not bigger than n bytes. If n >= len(frame), nil is returned and nothing is modified.
func (*StreamFrame) Write ¶
func (f *StreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
Write writes a STREAM frame
type StreamIDBlockedFrame ¶ added in v0.7.0
A StreamIDBlockedFrame is a STREAM_ID_BLOCKED frame
func (*StreamIDBlockedFrame) Length ¶ added in v0.8.0
func (f *StreamIDBlockedFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StreamIDBlockedFrame) Write ¶ added in v0.7.0
func (f *StreamIDBlockedFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
Source Files
¶
- ack_frame.go
- ack_frame_legacy.go
- ack_range.go
- blocked_frame.go
- blocked_frame_legacy.go
- connection_close_frame.go
- frame.go
- frame_parser.go
- goaway_frame.go
- header.go
- header_parser.go
- log.go
- max_data_frame.go
- max_stream_data_frame.go
- max_stream_id_frame.go
- path_challenge_frame.go
- path_response_frame.go
- ping_frame.go
- public_reset.go
- rst_stream_frame.go
- stop_sending_frame.go
- stop_waiting_frame.go
- stream_blocked_frame.go
- stream_frame.go
- stream_frame_legacy.go
- stream_id_blocked_frame.go
- version_negotiation.go
- window_update_frame.go