Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
TLSConfig *tls.Config
// ConnStateCallback will be called when the QUIC version is successfully negotiated or when the encryption level changes.
// If this field is not set, the Dial functions will return only when the connection is forward secure.
// Callbacks have to be thread-safe, since they might be called in separate goroutines.
ConnState ConnStateCallback
}
Config contains all configuration data needed for a QUIC server or client. More config parameters (such as timeouts) will be added soon, see e.g. https://github.com/lucas-clemente/quic-go/issues/441.
type ConnState ¶
type ConnState int
ConnState is the status of the connection
const ( // ConnStateInitial is the initial state ConnStateInitial ConnState = iota // ConnStateVersionNegotiated means that version negotiation is complete ConnStateVersionNegotiated // ConnStateSecure means that the connection is encrypted ConnStateSecure // ConnStateForwardSecure means that the connection is forward secure ConnStateForwardSecure )
type ConnStateCallback ¶
ConnStateCallback is called every time the connection moves to another connection state.
type Listener ¶
type Listener interface {
// Close the server, sending CONNECTION_CLOSE frames to each peer.
Close() error
// Addr returns the local network addr that the server is listening on.
Addr() net.Addr
// Serve starts the main server loop, and blocks until a network error occurs or the server is closed.
Serve() error
}
A Listener for incoming QUIC connections
type PublicHeader ¶
type PublicHeader struct {
Raw []byte
ConnectionID protocol.ConnectionID
VersionFlag bool
ResetFlag bool
TruncateConnectionID bool
PacketNumberLen protocol.PacketNumberLen
PacketNumber protocol.PacketNumber
VersionNumber protocol.VersionNumber // VersionNumber sent by the client
SupportedVersions []protocol.VersionNumber // VersionNumbers sent by the server
DiversificationNonce []byte
}
The PublicHeader of a QUIC packet. Warning: This struct should not be considered stable and will change soon.
func ParsePublicHeader ¶
func ParsePublicHeader(b *bytes.Reader, packetSentBy protocol.Perspective) (*PublicHeader, error)
ParsePublicHeader parses a QUIC packet's public header. The packetSentBy is the perspective of the peer that sent this PublicHeader, i.e. if we're the server, packetSentBy should be PerspectiveClient. Warning: This API should not be considered stable and will change soon.
func (*PublicHeader) GetLength ¶
func (h *PublicHeader) GetLength(pers protocol.Perspective) (protocol.ByteCount, error)
GetLength gets the length of the publicHeader in bytes. It can only be called for regular packets.
func (*PublicHeader) Write ¶
func (h *PublicHeader) Write(b *bytes.Buffer, version protocol.VersionNumber, pers protocol.Perspective) error
Write writes a public header. Warning: This API should not be considered stable and will change soon.
type Session ¶
type Session interface {
// AcceptStream returns the next stream opened by the peer, blocking until one is available.
// Since stream 1 is reserved for the crypto stream, the first stream is either 2 (for a client) or 3 (for a server).
AcceptStream() (Stream, error)
// OpenStream opens a new QUIC stream, returning a special error when the peeer's concurrent stream limit is reached.
// New streams always have the smallest possible stream ID.
// TODO: Enable testing for the special error
OpenStream() (Stream, error)
// OpenStreamSync opens a new QUIC stream, blocking until the peer's concurrent stream limit allows a new stream to be opened.
// It always picks the smallest possible stream ID.
OpenStreamSync() (Stream, error)
// LocalAddr returns the local address.
LocalAddr() net.Addr
// RemoteAddr returns the address of the peer.
RemoteAddr() net.Addr
// Close closes the connection. The error will be sent to the remote peer in a CONNECTION_CLOSE frame. An error value of nil is allowed and will cause a normal PeerGoingAway to be sent.
Close(error) error
}
A Session is a QUIC connection between two peers.