Documentation ¶
Index ¶
- func ComposeVersionNegotiation(destConnID, srcConnID protocol.ConnectionID, versions []protocol.VersionNumber) ([]byte, error)
- func IsVersionNegotiationPacket(b []byte) bool
- func LogFrame(logger utils.Logger, frame Frame, sent bool)
- func ParseConnectionID(data []byte, shortHeaderConnIDLen int) (protocol.ConnectionID, error)
- 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 ConnectionCloseFrame
- type CryptoFrame
- type DataBlockedFrame
- type ExtendedHeader
- type Frame
- type FrameParser
- type Header
- type MaxDataFrame
- type MaxStreamDataFrame
- type MaxStreamsFrame
- type NewConnectionIDFrame
- type NewTokenFrame
- type PathChallengeFrame
- type PathResponseFrame
- type PingFrame
- type ResetStreamFrame
- type RetireConnectionIDFrame
- type StopSendingFrame
- type StreamDataBlockedFrame
- 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 StreamsBlockedFrame
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ComposeVersionNegotiation ¶
func ComposeVersionNegotiation(destConnID, srcConnID protocol.ConnectionID, versions []protocol.VersionNumber) ([]byte, error)
ComposeVersionNegotiation composes a Version Negotiation
func IsVersionNegotiationPacket ¶
IsVersionNegotiationPacket says if this is a version negotiation packet
func ParseConnectionID ¶
func ParseConnectionID(data []byte, shortHeaderConnIDLen int) (protocol.ConnectionID, error)
ParseConnectionID parses the destination connection ID of a packet. It uses the data slice for the connection ID. That means that the connection ID must not be used after the packet buffer is released.
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 ¶
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 ¶
func (r AckRange) Len() protocol.PacketNumber
Len returns the number of packets contained in this ACK range
type ConnectionCloseFrame ¶
type ConnectionCloseFrame struct { IsApplicationError bool ErrorCode qerr.ErrorCode ReasonPhrase string }
A ConnectionCloseFrame is a CONNECTION_CLOSE frame
func (*ConnectionCloseFrame) Length ¶
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
type CryptoFrame ¶
A CryptoFrame is a CRYPTO frame
func (*CryptoFrame) Length ¶
func (f *CryptoFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*CryptoFrame) MaxDataLen ¶
func (f *CryptoFrame) MaxDataLen(maxSize protocol.ByteCount) protocol.ByteCount
MaxDataLen returns the maximum data length
func (*CryptoFrame) Write ¶
func (f *CryptoFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type DataBlockedFrame ¶
A DataBlockedFrame is a DATA_BLOCKED frame
func (*DataBlockedFrame) Length ¶
func (f *DataBlockedFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*DataBlockedFrame) Write ¶
func (f *DataBlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
type ExtendedHeader ¶
type ExtendedHeader struct { Header PacketNumberLen protocol.PacketNumberLen PacketNumber protocol.PacketNumber KeyPhase int // contains filtered or unexported fields }
ExtendedHeader is the header of a QUIC packet.
func (*ExtendedHeader) GetLength ¶
func (h *ExtendedHeader) GetLength(v protocol.VersionNumber) protocol.ByteCount
GetLength determines the length of the Header.
func (*ExtendedHeader) Write ¶
func (h *ExtendedHeader) Write(b *bytes.Buffer, ver protocol.VersionNumber) error
Write writes the Header.
type Frame ¶
type Frame interface { Write(b *bytes.Buffer, version protocol.VersionNumber) error Length(version protocol.VersionNumber) protocol.ByteCount }
A Frame in QUIC
type FrameParser ¶
type FrameParser interface { ParseNext(*bytes.Reader, protocol.EncryptionLevel) (Frame, error) SetAckDelayExponent(uint8) }
A FrameParser parses QUIC frames, one by one.
func NewFrameParser ¶
func NewFrameParser(v protocol.VersionNumber) FrameParser
NewFrameParser creates a new frame parser.
type Header ¶
type Header struct { Version protocol.VersionNumber SrcConnectionID protocol.ConnectionID DestConnectionID protocol.ConnectionID IsLongHeader bool Type protocol.PacketType Length protocol.ByteCount Token []byte SupportedVersions []protocol.VersionNumber // sent in a Version Negotiation Packet OrigDestConnectionID protocol.ConnectionID // sent in the Retry packet // contains filtered or unexported fields }
The Header is the version independent part of the header
func ParsePacket ¶
ParsePacket parses a packet. If the packet has a long header, the packet is cut according to the length field. If we understand the version, the packet is header up unto the packet number. Otherwise, only the invariant part of the header is parsed.
func (*Header) ParseExtended ¶
func (h *Header) ParseExtended(b *bytes.Reader, ver protocol.VersionNumber) (*ExtendedHeader, error)
ParseExtended parses the version dependent part of the header. The Reader has to be set such that it points to the first byte of the header.
type MaxDataFrame ¶
A MaxDataFrame carries flow control information for the connection
func (*MaxDataFrame) Length ¶
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 is a MAX_STREAM_DATA frame
func (*MaxStreamDataFrame) Length ¶
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
type MaxStreamsFrame ¶
type MaxStreamsFrame struct { Type protocol.StreamType MaxStreamNum protocol.StreamNum }
A MaxStreamsFrame is a MAX_STREAMS frame
func (*MaxStreamsFrame) Length ¶
func (f *MaxStreamsFrame) Length(protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*MaxStreamsFrame) Write ¶
func (f *MaxStreamsFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type NewConnectionIDFrame ¶
type NewConnectionIDFrame struct { SequenceNumber uint64 ConnectionID protocol.ConnectionID StatelessResetToken [16]byte }
A NewConnectionIDFrame is a NEW_CONNECTION_ID frame
func (*NewConnectionIDFrame) Length ¶
func (f *NewConnectionIDFrame) Length(protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*NewConnectionIDFrame) Write ¶
func (f *NewConnectionIDFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type NewTokenFrame ¶
type NewTokenFrame struct {
Token []byte
}
A NewTokenFrame is a NEW_TOKEN frame
func (*NewTokenFrame) Length ¶
func (f *NewTokenFrame) Length(protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*NewTokenFrame) Write ¶
func (f *NewTokenFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type PathChallengeFrame ¶
type PathChallengeFrame struct {
Data [8]byte
}
A PathChallengeFrame is a PATH_CHALLENGE frame
func (*PathChallengeFrame) Length ¶
func (f *PathChallengeFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*PathChallengeFrame) Write ¶
func (f *PathChallengeFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type PathResponseFrame ¶
type PathResponseFrame struct {
Data [8]byte
}
A PathResponseFrame is a PATH_RESPONSE frame
func (*PathResponseFrame) Length ¶
func (f *PathResponseFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*PathResponseFrame) Write ¶
func (f *PathResponseFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type PingFrame ¶
type PingFrame struct{}
A PingFrame is a PING frame
type ResetStreamFrame ¶
type ResetStreamFrame struct { StreamID protocol.StreamID ErrorCode protocol.ApplicationErrorCode ByteOffset protocol.ByteCount }
A ResetStreamFrame is a RESET_STREAM frame in QUIC
func (*ResetStreamFrame) Length ¶
func (f *ResetStreamFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*ResetStreamFrame) Write ¶
func (f *ResetStreamFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
type RetireConnectionIDFrame ¶
type RetireConnectionIDFrame struct {
SequenceNumber uint64
}
A RetireConnectionIDFrame is a RETIRE_CONNECTION_ID frame
func (*RetireConnectionIDFrame) Length ¶
func (f *RetireConnectionIDFrame) Length(protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*RetireConnectionIDFrame) Write ¶
func (f *RetireConnectionIDFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type StopSendingFrame ¶
type StopSendingFrame struct { StreamID protocol.StreamID ErrorCode protocol.ApplicationErrorCode }
A StopSendingFrame is a STOP_SENDING frame
func (*StopSendingFrame) Length ¶
func (f *StopSendingFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StopSendingFrame) Write ¶
func (f *StopSendingFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
type StreamDataBlockedFrame ¶
A StreamDataBlockedFrame is a STREAM_DATA_BLOCKED frame
func (*StreamDataBlockedFrame) Length ¶
func (f *StreamDataBlockedFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StreamDataBlockedFrame) Write ¶
func (f *StreamDataBlockedFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error
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 ¶
func (f *StreamFrame) Length(version protocol.VersionNumber) protocol.ByteCount
Length returns the total length of the STREAM frame
func (*StreamFrame) MaxDataLen ¶
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 ¶
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 StreamsBlockedFrame ¶
type StreamsBlockedFrame struct { Type protocol.StreamType StreamLimit protocol.StreamNum }
A StreamsBlockedFrame is a STREAMS_BLOCKED frame
func (*StreamsBlockedFrame) Length ¶
func (f *StreamsBlockedFrame) Length(_ protocol.VersionNumber) protocol.ByteCount
Length of a written frame
func (*StreamsBlockedFrame) Write ¶
func (f *StreamsBlockedFrame) Write(b *bytes.Buffer, _ protocol.VersionNumber) error
Source Files ¶
- ack_frame.go
- ack_range.go
- connection_close_frame.go
- crypto_frame.go
- data_blocked_frame.go
- extended_header.go
- frame_parser.go
- header.go
- interface.go
- log.go
- max_data_frame.go
- max_stream_data_frame.go
- max_streams_frame.go
- new_connection_id_frame.go
- new_token_frame.go
- path_challenge_frame.go
- path_response_frame.go
- ping_frame.go
- reset_stream_frame.go
- retire_connection_id_frame.go
- stop_sending_frame.go
- stream_data_blocked_frame.go
- stream_frame.go
- streams_blocked_frame.go
- version_negotiation.go