pool

package
v1.31.1 Latest Latest
Warning

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

Go to latest
Published: Nov 1, 2023 License: GPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// io.Copy default buffer size is 32 KiB
	// but the maximum packet size of vmess/shadowsocks is about 16 KiB
	// so define a buffer of 20 KiB to reduce the memory of each TCP relay
	RelayBufferSize = 20 * 1024

	// RelayBufferSize uses 20KiB, but due to the allocator it will actually
	// request 32Kib. Most UDPs are smaller than the MTU, and the TUN's MTU
	// set to 9000, so the UDP Buffer size set to 16Kib
	UDPBufferSize = 16 * 1024
)

Variables

This section is empty.

Functions

func Get

func Get(size int) []byte

func GetBuffer

func GetBuffer() *bytes.Buffer

func Put

func Put(buf []byte) error

func PutBuffer

func PutBuffer(buf *bytes.Buffer)

func PutBufferWriter

func PutBufferWriter(buf *BufferWriter)

Types

type Allocator

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

Allocator for incoming frames, optimized to prevent overwriting after zeroing

func NewAllocator

func NewAllocator() *Allocator

NewAllocator initiates a []byte allocator for frames less than 65536 bytes, the waste(memory fragmentation) of space allocation is guaranteed to be no more than 50%.

func (*Allocator) Get

func (alloc *Allocator) Get(size int) []byte

Get a []byte from pool with most appropriate cap

func (*Allocator) Put

func (alloc *Allocator) Put(buf []byte) error

Put returns a []byte to pool for future use, which the cap must be exactly 2^n

type Buffer

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

func NewBuffer

func NewBuffer() Buffer

func (Buffer) Bytes

func (b Buffer) Bytes() []byte

func (Buffer) Cap

func (b Buffer) Cap() int

func (Buffer) Grow

func (b Buffer) Grow(n int)

func (Buffer) Len

func (b Buffer) Len() int

func (Buffer) Next

func (b Buffer) Next(n int) []byte

func (Buffer) Read

func (b Buffer) Read(p []byte) (n int, err error)

func (Buffer) ReadByte

func (b Buffer) ReadByte() (byte, error)

func (Buffer) ReadFrom

func (b Buffer) ReadFrom(r io.Reader) (n int64, err error)

func (Buffer) ReadFullFrom

func (b Buffer) ReadFullFrom(r io.Reader, size int64) (n int64, err error)

func (Buffer) ReadUint16

func (b Buffer) ReadUint16(r io.Reader) (uint16, error)

func (Buffer) ReadUint16be

func (b Buffer) ReadUint16be(r io.Reader) (uint16, error)

func (Buffer) ReadUint32

func (b Buffer) ReadUint32(r io.Reader) (uint32, error)

func (Buffer) ReadUint32be

func (b Buffer) ReadUint32be(r io.Reader) (uint32, error)

func (Buffer) ReadUint64

func (b Buffer) ReadUint64(r io.Reader) (uint64, error)

func (Buffer) ReadUint64be

func (b Buffer) ReadUint64be(r io.Reader) (uint64, error)

func (Buffer) ReadUint8

func (b Buffer) ReadUint8(r io.Reader) (uint8, error)

func (*Buffer) Release

func (b *Buffer) Release()

func (Buffer) Reset

func (b Buffer) Reset()

func (Buffer) Write

func (b Buffer) Write(p []byte) (n int, err error)

func (Buffer) WriteTo

func (b Buffer) WriteTo(w io.Writer) (n int64, err error)

type BufferReader

type BufferReader []byte

func (*BufferReader) Cap

func (br *BufferReader) Cap() int

func (*BufferReader) IsEmpty

func (br *BufferReader) IsEmpty() bool

func (*BufferReader) Len

func (br *BufferReader) Len() int

func (*BufferReader) Read

func (br *BufferReader) Read(p []byte) (n int, err error)

func (*BufferReader) ReadByte

func (br *BufferReader) ReadByte() (byte, error)

func (*BufferReader) ReadIPv4

func (br *BufferReader) ReadIPv4() netip.Addr

func (*BufferReader) ReadIPv6

func (br *BufferReader) ReadIPv6() netip.Addr

func (*BufferReader) ReadUint16

func (br *BufferReader) ReadUint16() uint16

func (*BufferReader) ReadUint16be

func (br *BufferReader) ReadUint16be() uint16

func (*BufferReader) ReadUint32

func (br *BufferReader) ReadUint32() uint32

func (*BufferReader) ReadUint32be

func (br *BufferReader) ReadUint32be() uint32

func (*BufferReader) ReadUint64

func (br *BufferReader) ReadUint64() uint64

func (*BufferReader) ReadUint64be

func (br *BufferReader) ReadUint64be() uint64

func (*BufferReader) ReadUint8

func (br *BufferReader) ReadUint8() uint8

func (*BufferReader) ReadUvarint

func (br *BufferReader) ReadUvarint() (uint64, error)

func (*BufferReader) ReadVarint

func (br *BufferReader) ReadVarint() (int64, error)

func (*BufferReader) Skip

func (br *BufferReader) Skip(n int)

func (*BufferReader) SplitAt

func (br *BufferReader) SplitAt(n int) (BufferReader, BufferReader)

func (*BufferReader) SplitBy

func (br *BufferReader) SplitBy(f func(byte) bool) (BufferReader, BufferReader)

type BufferWriter

type BufferWriter []byte

func GetBufferWriter

func GetBufferWriter() *BufferWriter

func (*BufferWriter) Bytes

func (bw *BufferWriter) Bytes() []byte

func (*BufferWriter) Cap

func (bw *BufferWriter) Cap() int

func (*BufferWriter) Grow

func (bw *BufferWriter) Grow(n int) int

func (*BufferWriter) Len

func (bw *BufferWriter) Len() int

func (*BufferWriter) PutIPv4

func (bw *BufferWriter) PutIPv4(ip net.IP)

func (*BufferWriter) PutIPv6

func (bw *BufferWriter) PutIPv6(ip net.IP)

func (*BufferWriter) PutNetIPv4

func (bw *BufferWriter) PutNetIPv4(addr netip.Addr)

func (*BufferWriter) PutNetIPv6

func (bw *BufferWriter) PutNetIPv6(addr netip.Addr)

func (*BufferWriter) PutRune

func (bw *BufferWriter) PutRune(r rune)

func (*BufferWriter) PutSlice

func (bw *BufferWriter) PutSlice(p []byte)

func (*BufferWriter) PutString

func (bw *BufferWriter) PutString(s string)

func (*BufferWriter) PutUint16

func (bw *BufferWriter) PutUint16(v uint16)

func (*BufferWriter) PutUint16be

func (bw *BufferWriter) PutUint16be(v uint16)

func (*BufferWriter) PutUint32

func (bw *BufferWriter) PutUint32(v uint32)

func (*BufferWriter) PutUint32be

func (bw *BufferWriter) PutUint32be(v uint32)

func (*BufferWriter) PutUint64

func (bw *BufferWriter) PutUint64(v uint64)

func (*BufferWriter) PutUint64be

func (bw *BufferWriter) PutUint64be(v uint64)

func (*BufferWriter) PutUint8

func (bw *BufferWriter) PutUint8(v uint8)

func (*BufferWriter) PutUvarint

func (bw *BufferWriter) PutUvarint(v uint64)

func (*BufferWriter) PutVarint

func (bw *BufferWriter) PutVarint(v int64)

func (*BufferWriter) ReadFull

func (bw *BufferWriter) ReadFull(r io.Reader, n int) error

func (*BufferWriter) Reset

func (bw *BufferWriter) Reset()

func (*BufferWriter) Slice

func (bw *BufferWriter) Slice(begin, end int) BufferWriter

func (*BufferWriter) String

func (bw *BufferWriter) String() string

func (*BufferWriter) Write

func (bw *BufferWriter) Write(p []byte) (n int, err error)

func (*BufferWriter) WriteTo

func (bw *BufferWriter) WriteTo(w io.Writer) (n int64, err error)

Jump to

Keyboard shortcuts

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