wire

package
v4.15.0+incompatible Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 7, 2019 License: MIT, MIT Imports: 11 Imported by: 0

Documentation

Index

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 LogFrame

func LogFrame(logger utils.Logger, frame Frame, sent bool)

LogFrame logs a frame, either sent or received

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

func (f *AckFrame) HasMissingRanges() bool

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

func (*AckFrame) Write

func (f *AckFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error

Write writes an ACK frame.

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

Length of a written frame

func (*ConnectionCloseFrame) Write

type CryptoFrame

type CryptoFrame struct {
	Offset protocol.ByteCount
	Data   []byte
}

A CryptoFrame is a CRYPTO frame

func (*CryptoFrame) Length

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

type DataBlockedFrame

type DataBlockedFrame struct {
	DataLimit protocol.ByteCount
}

A DataBlockedFrame is a DATA_BLOCKED frame

func (*DataBlockedFrame) Length

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

GetLength determines the length of the Header.

func (*ExtendedHeader) Log

func (h *ExtendedHeader) Log(logger utils.Logger)

Log logs the Header

func (*ExtendedHeader) Write

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

func ParseNextFrame(r *bytes.Reader, v protocol.VersionNumber) (Frame, error)

ParseNextFrame parses the next frame It skips PADDING frames.

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

func ParseHeader(b *bytes.Reader, shortHeaderConnIDLen int) (*Header, error)

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

func (h *Header) IsVersionNegotiation() bool

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.

func (*Header) ParsedLen

func (h *Header) ParsedLen() protocol.ByteCount

ParsedLen returns the number of bytes that were consumed when parsing the header

type MaxDataFrame

type MaxDataFrame struct {
	ByteOffset protocol.ByteCount
}

A MaxDataFrame carries flow control information for the connection

func (*MaxDataFrame) Length

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

type MaxStreamDataFrame struct {
	StreamID   protocol.StreamID
	ByteOffset protocol.ByteCount
}

A MaxStreamDataFrame is a MAX_STREAM_DATA frame

func (*MaxStreamDataFrame) Length

Length of a written frame

func (*MaxStreamDataFrame) Write

type MaxStreamsFrame

type MaxStreamsFrame struct {
	Type       protocol.StreamType
	MaxStreams uint64
}

A MaxStreamsFrame is a MAX_STREAMS frame

func (*MaxStreamsFrame) Length

Length of a written frame

func (*MaxStreamsFrame) Write

type NewConnectionIDFrame

type NewConnectionIDFrame struct {
	SequenceNumber      uint64
	ConnectionID        protocol.ConnectionID
	StatelessResetToken [16]byte
}

A NewConnectionIDFrame is a NEW_CONNECTION_ID frame

func (*NewConnectionIDFrame) Length

Length of a written frame

func (*NewConnectionIDFrame) Write

type NewTokenFrame

type NewTokenFrame struct {
	Token []byte
}

A NewTokenFrame is a NEW_TOKEN frame

func (*NewTokenFrame) Length

Length of a written frame

func (*NewTokenFrame) Write

type PathChallengeFrame

type PathChallengeFrame struct {
	Data [8]byte
}

A PathChallengeFrame is a PATH_CHALLENGE frame

func (*PathChallengeFrame) Length

Length of a written frame

func (*PathChallengeFrame) Write

type PathResponseFrame

type PathResponseFrame struct {
	Data [8]byte
}

A PathResponseFrame is a PATH_RESPONSE frame

func (*PathResponseFrame) Length

Length of a written frame

func (*PathResponseFrame) Write

type PingFrame

type PingFrame struct{}

A PingFrame is a PING frame

func (*PingFrame) Length

func (f *PingFrame) Length(version protocol.VersionNumber) protocol.ByteCount

Length of a written frame

func (*PingFrame) Write

func (f *PingFrame) Write(b *bytes.Buffer, version protocol.VersionNumber) error

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

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

Length of a written frame

func (*RetireConnectionIDFrame) Write

type StopSendingFrame

type StopSendingFrame struct {
	StreamID  protocol.StreamID
	ErrorCode protocol.ApplicationErrorCode
}

A StopSendingFrame is a STOP_SENDING frame

func (*StopSendingFrame) Length

Length of a written frame

func (*StopSendingFrame) Write

type StreamDataBlockedFrame

type StreamDataBlockedFrame struct {
	StreamID  protocol.StreamID
	DataLimit protocol.ByteCount
}

A StreamDataBlockedFrame is a STREAM_DATA_BLOCKED frame

func (*StreamDataBlockedFrame) Length

Length of a written frame

func (*StreamDataBlockedFrame) Write

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

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

Length of a written frame

func (*StreamsBlockedFrame) Write

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL