wire

package
v0.7.0 Latest Latest
Warning

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

Go to latest
Published: Feb 3, 2018 License: MIT Imports: 12 Imported by: 0

Documentation

Index

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(
	connID protocol.ConnectionID,
	pn protocol.PacketNumber,
	versions []protocol.VersionNumber,
) []byte

ComposeVersionNegotiation composes a Version Negotiation according to the IETF draft

func LogFrame

func LogFrame(frame Frame, sent bool)

LogFrame logs a frame, either sent or received

func WritePublicReset

func WritePublicReset(connectionID protocol.ConnectionID, rejectedPacketNumber protocol.PacketNumber, nonceProof uint64) []byte

WritePublicReset writes a Public Reset

Types

type AckFrame

type AckFrame struct {
	LargestAcked protocol.PacketNumber
	LowestAcked  protocol.PacketNumber
	AckRanges    []AckRange // has to be ordered. The highest ACK range goes first, the lowest ACK range goes last

	// time when the LargestAcked was receiveid
	// this field will not be set for received ACKs frames
	PacketReceivedTime time.Time
	DelayTime          time.Duration
}

An AckFrame is an ACK frame

func ParseAckFrame

func ParseAckFrame(r *bytes.Reader, version protocol.VersionNumber) (*AckFrame, error)

ParseAckFrame reads 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) MinLength

func (f *AckFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount

MinLength of a written frame

func (*AckFrame) Write

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

Write writes an ACK frame.

type AckRange

type AckRange struct {
	First protocol.PacketNumber
	Last  protocol.PacketNumber
}

AckRange is an ACK range

type BlockedFrame

type BlockedFrame struct {
	Offset protocol.ByteCount
}

A BlockedFrame is a BLOCKED frame

func ParseBlockedFrame

func ParseBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*BlockedFrame, error)

ParseBlockedFrame parses a BLOCKED frame

func (*BlockedFrame) MinLength

func (f *BlockedFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount

MinLength of a written frame

func (*BlockedFrame) Write

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

type ConnectionCloseFrame

type ConnectionCloseFrame struct {
	ErrorCode    qerr.ErrorCode
	ReasonPhrase string
}

A ConnectionCloseFrame in QUIC

func ParseConnectionCloseFrame

func ParseConnectionCloseFrame(r *bytes.Reader, version protocol.VersionNumber) (*ConnectionCloseFrame, error)

ParseConnectionCloseFrame reads a CONNECTION_CLOSE frame

func (*ConnectionCloseFrame) MinLength

MinLength of a written frame

func (*ConnectionCloseFrame) Write

Write writes an CONNECTION_CLOSE frame.

type Frame

type Frame interface {
	Write(b *bytes.Buffer, version protocol.VersionNumber) error
	MinLength(version protocol.VersionNumber) protocol.ByteCount
}

A Frame in QUIC

func ParseBlockedFrameLegacy

func ParseBlockedFrameLegacy(r *bytes.Reader, _ protocol.VersionNumber) (Frame, error)

ParseBlockedFrameLegacy parses a BLOCKED frame (in gQUIC format) The frame returned is * a STREAM_BLOCKED frame, if the BLOCKED applies to a stream * a BLOCKED frame, if the BLOCKED applies to the connection

func ParseWindowUpdateFrame

func ParseWindowUpdateFrame(r *bytes.Reader, _ protocol.VersionNumber) (Frame, error)

ParseWindowUpdateFrame parses a WINDOW_UPDATE frame The frame returned is * a MAX_STREAM_DATA frame, if the WINDOW_UPDATE applies to a stream * a MAX_DATA frame, if the WINDOW_UPDATE applies to the connection

type GoawayFrame

type GoawayFrame struct {
	ErrorCode      qerr.ErrorCode
	LastGoodStream protocol.StreamID
	ReasonPhrase   string
}

A GoawayFrame is a GOAWAY frame

func ParseGoawayFrame

func ParseGoawayFrame(r *bytes.Reader, _ protocol.VersionNumber) (*GoawayFrame, error)

ParseGoawayFrame parses a GOAWAY frame

func (*GoawayFrame) MinLength

func (f *GoawayFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount

MinLength of a written frame

func (*GoawayFrame) Write

type Header struct {
	Raw              []byte
	ConnectionID     protocol.ConnectionID
	OmitConnectionID bool
	PacketNumberLen  protocol.PacketNumberLen
	PacketNumber     protocol.PacketNumber
	Version          protocol.VersionNumber // VersionNumber sent by the client

	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
	// contains filtered or unexported fields
}

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 ParseHeaderSentByClient

func ParseHeaderSentByClient(b *bytes.Reader) (*Header, error)

ParseHeaderSentByClient parses the header for a packet that was sent by the client.

func ParseHeaderSentByServer

func ParseHeaderSentByServer(b *bytes.Reader, version protocol.VersionNumber) (*Header, error)

ParseHeaderSentByServer parses the header for a packet that was sent by the server.

func (*Header) GetLength

func (h *Header) GetLength(pers protocol.Perspective, version protocol.VersionNumber) (protocol.ByteCount, error)

GetLength determines the length of the Header.

func (*Header) Log

func (h *Header) Log()

Log logs the Header

func (*Header) Write

func (h *Header) Write(b *bytes.Buffer, pers protocol.Perspective, version protocol.VersionNumber) error

Write writes the Header.

type MaxDataFrame

type MaxDataFrame struct {
	ByteOffset protocol.ByteCount
}

A MaxDataFrame carries flow control information for the connection

func ParseMaxDataFrame

func ParseMaxDataFrame(r *bytes.Reader, version protocol.VersionNumber) (*MaxDataFrame, error)

ParseMaxDataFrame parses a MAX_DATA frame

func (*MaxDataFrame) MinLength

func (f *MaxDataFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount

MinLength 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 carries flow control information for a stream

func ParseMaxStreamDataFrame

func ParseMaxStreamDataFrame(r *bytes.Reader, version protocol.VersionNumber) (*MaxStreamDataFrame, error)

ParseMaxStreamDataFrame parses a MAX_STREAM_DATA frame

func (*MaxStreamDataFrame) MinLength

MinLength of a written frame

func (*MaxStreamDataFrame) Write

Write writes a MAX_STREAM_DATA frame

type MaxStreamIDFrame added in v0.7.0

type MaxStreamIDFrame struct {
	StreamID protocol.StreamID
}

A MaxStreamIDFrame is a MAX_STREAM_ID frame

func ParseMaxStreamIDFrame added in v0.7.0

func ParseMaxStreamIDFrame(r *bytes.Reader, _ protocol.VersionNumber) (*MaxStreamIDFrame, error)

ParseMaxStreamIDFrame parses a MAX_STREAM_ID frame

func (*MaxStreamIDFrame) MinLength added in v0.7.0

MinLength of a written frame

func (*MaxStreamIDFrame) Write added in v0.7.0

type PingFrame

type PingFrame struct{}

A PingFrame is a ping frame

func ParsePingFrame

func ParsePingFrame(r *bytes.Reader, version protocol.VersionNumber) (*PingFrame, error)

ParsePingFrame parses a Ping frame

func (*PingFrame) MinLength

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

MinLength of a written frame

func (*PingFrame) Write

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

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 ParseRstStreamFrame

func ParseRstStreamFrame(r *bytes.Reader, version protocol.VersionNumber) (*RstStreamFrame, error)

ParseRstStreamFrame parses a RST_STREAM frame

func (*RstStreamFrame) MinLength

func (f *RstStreamFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount

MinLength 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 ParseStopSendingFrame added in v0.7.0

func ParseStopSendingFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StopSendingFrame, error)

ParseStopSendingFrame parses a STOP_SENDING frame

func (*StopSendingFrame) MinLength added in v0.7.0

MinLength of a written frame

func (*StopSendingFrame) Write added in v0.7.0

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 ParseStopWaitingFrame

func ParseStopWaitingFrame(r *bytes.Reader, packetNumber protocol.PacketNumber, packetNumberLen protocol.PacketNumberLen, _ protocol.VersionNumber) (*StopWaitingFrame, error)

ParseStopWaitingFrame parses a StopWaiting frame

func (*StopWaitingFrame) MinLength

MinLength of a written frame

func (*StopWaitingFrame) Write

type StreamBlockedFrame

type StreamBlockedFrame struct {
	StreamID protocol.StreamID
	Offset   protocol.ByteCount
}

A StreamBlockedFrame in QUIC

func ParseStreamBlockedFrame

func ParseStreamBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StreamBlockedFrame, error)

ParseStreamBlockedFrame parses a STREAM_BLOCKED frame

func (*StreamBlockedFrame) MinLength

MinLength of a written frame

func (*StreamBlockedFrame) Write

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 ParseStreamFrame

func ParseStreamFrame(r *bytes.Reader, version protocol.VersionNumber) (*StreamFrame, error)

ParseStreamFrame reads a STREAM frame

func (*StreamFrame) DataLen

func (f *StreamFrame) DataLen() protocol.ByteCount

DataLen gives the length of data in bytes

func (*StreamFrame) MinLength

func (f *StreamFrame) MinLength(version protocol.VersionNumber) protocol.ByteCount

MinLength returns the length of the header of a StreamFrame the total length of the frame is frame.MinLength() + frame.DataLen()

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

type StreamIDBlockedFrame struct {
	StreamID protocol.StreamID
}

A StreamIDBlockedFrame is a STREAM_ID_BLOCKED frame

func ParseStreamIDBlockedFrame added in v0.7.0

func ParseStreamIDBlockedFrame(r *bytes.Reader, _ protocol.VersionNumber) (*StreamIDBlockedFrame, error)

ParseStreamIDBlockedFrame parses a STREAM_ID_BLOCKED frame

func (*StreamIDBlockedFrame) MinLength added in v0.7.0

MinLength of a written frame

func (*StreamIDBlockedFrame) Write added in v0.7.0

Jump to

Keyboard shortcuts

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