Documentation
¶
Index ¶
- func ComposeVersionNegotiation(destConnID, srcConnID protocol.ConnectionID, versions []protocol.VersionNumber) ([]byte, error)
- func LogFrame(logger utils.Logger, frame Frame, sent bool)
- 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 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
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 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 ParseHeader ¶
ParseHeader parses the header. For short header packets: up to the packet number. For long header packets: * if we understand the version: up to the packet number * if not, only the invariant part of the header
func (*Header) IsVersionNegotiation ¶
IsVersionNegotiation says if this a version negotiation packet
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
MaxStreams uint64
}
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 uint64
}
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.go
- frame_parser.go
- header.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