utils

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2024 License: MIT Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const InfDuration = time.Duration(math.MaxInt64)

InfDuration is a duration of infinite length

Variables

This section is empty.

Functions

func IsIPv4

func IsIPv4(ip net.IP) bool

func MaxTime

func MaxTime(a, b time.Time) time.Time

MaxTime returns the later time

func Min

func Min[T constraints.Ordered](a, b T) T

[Psiphon]

func MinNonZeroDuration

func MinNonZeroDuration(a, b time.Duration) time.Duration

MinNonZeroDuration return the minimum duration that's not zero.

func MinNonZeroTime

func MinNonZeroTime(a, b time.Time) time.Time

MinNonZeroTime returns the earlist time that is not time.Time{} If both a and b are time.Time{}, it returns time.Time{}

func MinTime

func MinTime(a, b time.Time) time.Time

MinTime returns the earlier time

func NewBufferedWriteCloser

func NewBufferedWriteCloser(writer *bufio.Writer, closer io.Closer) io.WriteCloser

NewBufferedWriteCloser creates an io.WriteCloser from a bufio.Writer and an io.Closer

Types

type ByteOrder

type ByteOrder interface {
	Uint32([]byte) uint32
	Uint24([]byte) uint32
	Uint16([]byte) uint16

	ReadUint32(io.ByteReader) (uint32, error)
	ReadUint24(io.ByteReader) (uint32, error)
	ReadUint16(io.ByteReader) (uint16, error)

	WriteUint32(*bytes.Buffer, uint32)
	WriteUint24(*bytes.Buffer, uint32)
	WriteUint16(*bytes.Buffer, uint16)
}

A ByteOrder specifies how to convert byte sequences into 16-, 32-, or 64-bit unsigned integers.

var BigEndian ByteOrder = bigEndian{}

BigEndian is the big-endian implementation of ByteOrder.

type LogLevel

type LogLevel uint8

LogLevel of quic-go

const (
	// LogLevelNothing disables
	LogLevelNothing LogLevel = iota
	// LogLevelError enables err logs
	LogLevelError
	// LogLevelInfo enables info logs (e.g. packets)
	LogLevelInfo
	// LogLevelDebug enables debug logs (e.g. packet contents)
	LogLevelDebug
)

type Logger

type Logger interface {
	SetLogLevel(LogLevel)
	SetLogTimeFormat(format string)
	WithPrefix(prefix string) Logger
	Debug() bool

	Errorf(format string, args ...interface{})
	Infof(format string, args ...interface{})
	Debugf(format string, args ...interface{})
}

A Logger logs.

var DefaultLogger Logger

DefaultLogger is used by quic-go for logging.

type RTTStats

type RTTStats struct {
	// contains filtered or unexported fields
}

RTTStats provides round-trip statistics

func NewRTTStats

func NewRTTStats() *RTTStats

NewRTTStats makes a properly initialized RTTStats object

func (*RTTStats) ExpireSmoothedMetrics

func (r *RTTStats) ExpireSmoothedMetrics()

ExpireSmoothedMetrics causes the smoothed_rtt to be increased to the latest_rtt if the latest_rtt is larger. The mean deviation is increased to the most recent deviation if it's larger.

func (*RTTStats) LatestRTT

func (r *RTTStats) LatestRTT() time.Duration

LatestRTT returns the most recent rtt measurement. May return Zero if no valid updates have occurred.

func (*RTTStats) MaxAckDelay

func (r *RTTStats) MaxAckDelay() time.Duration

MaxAckDelay gets the max_ack_delay advertised by the peer

func (*RTTStats) MeanDeviation

func (r *RTTStats) MeanDeviation() time.Duration

MeanDeviation gets the mean deviation

func (*RTTStats) MinRTT

func (r *RTTStats) MinRTT() time.Duration

MinRTT Returns the minRTT for the entire connection. May return Zero if no valid updates have occurred.

func (*RTTStats) OnConnectionMigration

func (r *RTTStats) OnConnectionMigration()

OnConnectionMigration is called when connection migrates and rtt measurement needs to be reset.

func (*RTTStats) PTO

func (r *RTTStats) PTO(includeMaxAckDelay bool) time.Duration

PTO gets the probe timeout duration.

func (*RTTStats) SetInitialRTT

func (r *RTTStats) SetInitialRTT(t time.Duration)

SetInitialRTT sets the initial RTT. It is used during the 0-RTT handshake when restoring the RTT stats from the session state.

func (*RTTStats) SetMaxAckDelay

func (r *RTTStats) SetMaxAckDelay(mad time.Duration)

SetMaxAckDelay sets the max_ack_delay

func (*RTTStats) SmoothedRTT

func (r *RTTStats) SmoothedRTT() time.Duration

SmoothedRTT returns the smoothed RTT for the connection. May return Zero if no valid updates have occurred.

func (*RTTStats) UpdateRTT

func (r *RTTStats) UpdateRTT(sendDelta, ackDelay time.Duration, now time.Time)

UpdateRTT updates the RTT based on a new sample.

type Rand

type Rand struct {
	// contains filtered or unexported fields
}

Rand is a wrapper around crypto/rand that adds some convenience functions known from math/rand.

func (*Rand) Int31

func (r *Rand) Int31() int32

func (*Rand) Int31n

func (r *Rand) Int31n(n int32) int32

copied from the standard library math/rand implementation of Int63n

type Timer

type Timer struct {
	// contains filtered or unexported fields
}

A Timer wrapper that behaves correctly when resetting

func NewTimer

func NewTimer() *Timer

NewTimer creates a new timer that is not set

func (*Timer) Chan

func (t *Timer) Chan() <-chan time.Time

Chan returns the channel of the wrapped timer

func (*Timer) Deadline

func (t *Timer) Deadline() time.Time

func (*Timer) Reset

func (t *Timer) Reset(deadline time.Time)

Reset the timer, no matter whether the value was read or not

func (*Timer) SetRead

func (t *Timer) SetRead()

SetRead should be called after the value from the chan was read

func (*Timer) Stop

func (t *Timer) Stop()

Stop stops the timer

Directories

Path Synopsis
Package list implements a doubly linked list.
Package list implements a doubly linked list.

Jump to

Keyboard shortcuts

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