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
func ParseNextFrame ¶
ParseNextFrame parses the next frame It skips PADDING frames.
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